为什么这不起作用?我想 sublcas UINavigationBar 所以在 xcode 我点击新文件 - > 目标 c 类,类:CustomNavBar 子类:UINavigationBar
然后在导航控制器场景下的情节提要中,单击导航栏并将其类设置为 CustomNavBar。
然后我进入我的 CustomNaVBar 类并尝试添加自定义图像背景。
在 initWithFram 方法中,我添加了这个:
- (id)initWithFrame:(CGRect)frame
{
NSLog(@"Does it get here?"); //no
self = [super initWithFrame:frame];
if (self) {
// Initialization code
UIImage *image = [UIImage imageNamed:@"customNavBarImage.png"];
// [self setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
[self setBackgroundColor:[UIColor colorWithPatternImage:image]];
[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
NSLog(@"Does this get called?"); //no
}
return self;
}
我在控制台上看不到任何输出。
相反,我这样做是为了自定义 UINavBar,但我觉得它不像 sublasing 它那么正确。在我的第一个视图的 viewDidLoad 中,我添加了这一行:
- (void)viewDidLoad
{
[super viewDidLoad];
if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) {
UIImage *image = [UIImage imageNamed:@"customNavBarImage.png"];
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}
}