我已经将下面的代码应用到我的应用程序中,以更改导航栏图像。
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController.navigationBar setTintColor:[UIColor blackColor]];
[self setNavigationBarTitle];
}
-(void)setNavigationBarTitle {
UIView *aViewForTitle=[[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 45)] autorelease];
UIImageView *aImg=[[UIImageView alloc] initWithFrame:CGRectMake(-8, 0, 320, 45)];
aImg.image=[UIImage imageNamed:@"MyTabBG.png"];
[aViewForTitle addSubview:aImg]; [aImg release];
UILabel *lbl=[[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 305, 45)] autorelease];
lbl.backgroundColor=[UIColor clearColor]; lbl.font=[UIFont fontWithName:@"Trebuchet MS" size:22];
lbl.shadowColor=[UIColor blackColor]; [lbl setShadowOffset:CGSizeMake(1,1)];
lbl.textAlignment=UITextAlignmentCenter; lbl.textColor=[UIColor whiteColor]; lbl.text=@"Mobile Tennis Coach Overview";
[aViewForTitle addSubview:lbl];
[self.navigationItem.titleView addSubview:aViewForTitle];
}
请参见以下图片。你可以看到我面临的问题。
我的应用程序的每个视图控制器都有上述方法来设置导航栏背景。
但是,当我向应用程序推送一个新的视图控制器时。返回按钮将出现。
我需要返回按钮出现。但图像应该在后面的按钮。
2条答案
按热度按时间slhcrj9b1#
经过一个恼人的夜晚,我发现了一个轻微的调整,如果你使用drawLayer。使用drawRect,当你播放视频或youtube视频时,导航栏会被图像替换。我读了一些帖子,这导致他们的应用程序被拒绝。
如果这篇文章是准确的,所有人都应该可以使用这种方法:http://developer.apple.com/iphone/library/qa/qa2009/qa1637.html
agyaoht72#
简短的回答是,修改UINavigationBar的结构不受Apple支持。他们真的不想让你做你想做的事。这就是导致你所看到的问题的原因。
请提交一个雷达请求此功能,以便它可以得到足够的关注,以便在某个时候正式添加。
话虽如此,为了解决这个问题,你可以使用-drawRect向UINavigationBar添加一个类别:方法,并在该方法中绘制背景图像。这样的事情会奏效: