我正在使用自定义drawRect函数在iOS4中的应用程序上绘制 UINavigationBar ,它不使用图像,只使用CoreGraphics。
I'm using a custom drawRect function to draw on UINavigationBar across my application in iOS4, it doesn't use images, only CoreGraphics.
由于您无法在iOS5中的 UINavigationBar 类别中实现drawRect,Apple建议继承 UINavigationBar 。
Since you can't implement drawRect in UINavigationBar category in iOS5, Apple is suggesting to subclass UINavigationBar.
如何用我的子类替换 UINavigationBar 在 UINavigationController (当它只读取 navigationBar 属性时,它将与iOS4和iOS5兼容)
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我根本不在我的应用程序中使用XIB,因此向NIB添加 UINavigationBar 并通过InterfaceBuilder更改类是不是一个选项。
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.
推荐答案从iOS6开始,现在很容易实现,而不会通过使用 UINavigationControllers 方法 initWithNavigationBarClass:toolbarClass:
As of iOS6, this is now quite simple to accomplish without swizzling or messing with other classes by using UINavigationControllers method initWithNavigationBarClass:toolbarClass:
- (id)initWithNavigationBarClass:(Class)navigationBarClass toolbarClass:(Class)toolbarClass;来自文档:
初始化并返回一个新创建的导航控制器,使用您的自定义栏子类。
Initializes and returns a newly created navigation controller that uses your custom bar subclasses.
为iOS6更新了答案。
更多推荐
如何以编程方式为UINavigationController子类化UINavigationBar?
发布评论