我无法在iOS 6上因某种原因从我的UINavigationBar中删除阴影。为什么这不起作用?我尝试了以下内容:
if ([[UINavigationBar appearance]respondsToSelector:@selector(setShadowImage:)]){
[[UINavigationBar appearance]setShadowImage:[[UIImage alloc] init]];
}
if ([[UINavigationBar class]respondsToSelector:@selector(setShadowImage:)]){
[[UINavigationBar appearance]setShadowImage:[[UIImage alloc] init]];
}
答案 0 :(得分:3)
你必须在NavigationBar实例上做...
if ([navigationBarInstance respondsToSelector:@selector(setShadowImage:)]){
[navigationBarInstance setShadowImage:[[UIImage alloc] init]];
}
编辑: 如果您出于某种原因确实需要对类执行检查。这将有效:
if ([UINavigationBar instancesRespondToSelector:@selector(setShadowImage:)]) {
}
答案 1 :(得分:2)
这让我感到难过,直到我读完文档!
注意:
要显示自定义阴影图像,还必须使用setBackgroundImage:forBarMetrics:
方法设置自定义背景图像。如果使用默认背景图像,则无论此属性的值如何,都将使用默认阴影图像。
答案 2 :(得分:1)
Mike Pollard 没错。
要删除iOS 6上UINavigationBar
下面的阴影,除了将阴影图像设置为空白UIImage
之外,还需要设置自定义背景图像。
<强> CustomViewController.m 强>
- (void)viewDidLoad
{
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"Background"] forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];
}
在上面的例子中,“Background”将是项目中的PNG图像。