4

由于某种原因,我无法在 iOS6 上从我的 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]];
}
4

3 回答 3

3

您必须在 NavigationBar 实例上完成工作......

if ([navigationBarInstance respondsToSelector:@selector(setShadowImage:)]){
    [navigationBarInstance setShadowImage:[[UIImage alloc] init]];
}

编辑:如果您出于某种原因确实需要对class执行检查。这将起作用:

if ([UINavigationBar instancesRespondToSelector:@selector(setShadowImage:)]) {
}
于 2012-12-29T16:15:52.537 回答
2

在我阅读文档之前,这让我感到很困惑!

注意:要显示自定义阴影图像,还必须使用该setBackgroundImage:forBarMetrics:方法设置自定义背景图像。如果使用默认背景图像,则无论此属性的值如何,都将使用默认阴影图像。

于 2013-06-04T19:08:10.900 回答
1

迈克·波拉德说得对。

要在 iOS 6 上移除阴影下方的阴影UINavigationBar,除了将阴影图像设置为空白之外,您还需要设置自定义背景图像UIImage

自定义视图控制器.m

- (void)viewDidLoad
{
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"Background"] forBarMetrics:UIBarMetricsDefault];
    [self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];
}

在上面的示例中,“背景”将是您项目中的 PNG 图像。

于 2013-07-24T20:58:02.927 回答