UIAppearance setTranslucent error: Illegal property type, c for appearance setter, _installAppearanceSwizzleForSetter

shim picture shim · Jul 5, 2013 · Viewed 7.2k times · Source

Trying out iOS 7 did:

[[UINavigationBar appearance] setTranslucent:NO];

Got crash and error:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** Illegal property type, c for appearance setter, _installAppearanceSwizzleForSetter:'
*** First throw call stack:
(0x16ad9b8 0x142e8b6 0x16ad7ab 0x72163d 0x724c34 0x169daca 0x169d8de 0x6c09 0x228ea9 0x2296e9 0x22ab5e 0x240a6c 0x240fd9 0x22c7d5 0x35a4906 0x35a4411 0x16293e5 0x162911b 0x1653b30 0x165310d 0x1652f3b 0x22a2b1 0x22c4eb 0x6f3d 0x1d0d725)
libc++abi.dylib: terminating with uncaught exception of type NSException

Other calls work fine: eg.

[[UINavigationBar appearance] setBarStyle: UIBarStyleBlack];

When I set the translucency locally, it does not crash:

[self.navigationController.navigationBar setTranslucent:NO];

I'm assuming this is specific to iOS 7, but haven't tried out same thing in iOS 6 yet.

Answer

Dipak Narigara picture Dipak Narigara · Jul 5, 2013
[[UINavigationBar appearance] setTranslucent:NO] 

It is not available iOS 6.It is only available in iOS 7 onward.