我用这种方式制作了一个自定义的uinavigation吧:
@implementation UINavigationBar (UINavigationBarCategory)
- (void)drawRect:(CGRect)rect {
UIImage *img = [UIImage imageNamed: @"navigation_background.png"];
[img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
现在,当我将特定的viewcontroller加载到de navigationcontroller中时,我想添加异常以显示正常的uinavigation栏。
如何编写该例外代码?
答案 0 :(得分:2)
我认为UINavigationBar
上的类别不可能。
我会建议一个子类,比如CustomNavigationBar
·H
#import <UIKit/UIKit.h>
@interface CustomNavigationBar : UINavigationBar {
}
@end
的.m
#import "CustomNavigationBar.h"
@implementation CustomNavigationBar
- (void)drawRect:(CGRect)rect {
UIImage *img = [UIImage imageNamed: @"navigation_background.png"];
[img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
棘手的是你永远不会自己创建UINavigationBar
,这一切都由UIKit处理。要仅更改某些条形的外观,您必须在运行时手动更改它们的类。
导入
#import <objc/runtime.h>
在视图控制器中(例如在viewDidLoad中),添加
object_setClass(self.navigationController.navigationBar, [CustomNavigationBar class]);