I’m using a custom drawRect function to draw on UINavigationBar across my application in iOS4, it doesn’t use images, only CoreGraphics.
Since you can’t implement drawRect in UINavigationBar category in iOS5, Apple is suggesting to subclass UINavigationBar.
How is it possible to replace the UINavigationBar with my subclass in UINavigationController (so it’ll be compatible with iOS4 and iOS5) when the navigationBar property is read only?
@property(nonatomic, readonly) UINavigationBar *navigationBar
I’m not using XIBs in my application at all, so adding a UINavigationBar to a NIB and changing the class via InterfaceBuilder is not an option.
As of iOS6, this is now quite simple to accomplish without swizzling or messing with other classes by using
UINavigationControllersmethodinitWithNavigationBarClass:toolbarClass:From the docs:
Answer updated for iOS6.