爲什麼這不起作用?我想sublcass UINavigationBar的所以在Xcode我點擊新的文件 - >目標C類, 類:CustomNavBar 子類:UINavigationBar的iOS:如何繼承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,但我覺得它不像子分類那樣正確。在我的第一個觀點的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];
}
}
在'init'方法或'layoutSubviews'方法中添加該方法。它應該工作。 – iDev
那麼,我總是隻使用viewDidLoad。似乎子類化對於設置背景圖像來說相當有用。 – Josiah