UINavigationBar阴影何时显示? (iOS 6)

时间:2012-10-26 10:52:17

标签: ios6 uinavigationbar

我正在使用带有自定义背景图片的导航栏。当我想添加自定义阴影图像时,我惊讶地发现即使是默认阴影图像也不可见。

iOS 6在UINavigationBars上引入了一个自动投影,我希望看到它。来自http://www.raywenderlich.com/21703/user-interface-customization-in-ios-6的示例项目证明了这一点。

但是,从Xcode的Master-Detail模板创建一个新项目不会显示阴影。

什么时候显示阴影,什么时候不显示?

5 个答案:

答案 0 :(得分:3)

默认显示IOS 6自动投影。如果你想禁用/隐藏这个阴影你可以试试这个:

[[UINavigationBar appearance]setShadowImage:[[UIImage alloc] init]];

我注意到的是,如果我将viewController从一个项目复制/粘贴到一个新项目,UINavigationBar阴影(有时)不会显示。用新的替换复制的viewController解决了问题......(可能是你的情况)

答案 1 :(得分:1)

我在从iOS5升级的项目中遇到了同样的问题,但仅限于在iOS6之前的Xcode版本中插入的导航控制器。在最新版本的Xcode(4.6)中删除它们并用新的替换它们解决了这个问题。

答案 2 :(得分:1)

我在半年后找到的解决方法实际上非常简单:

self.navigationController.navigationBar.clipsToBounds = NO;

这就是说,我仍然认为这是Xcode 4.4 / 4.5如何在故事板中配置导航栏的错误。但至少现在我们知道如何解决它。干杯!

答案 3 :(得分:0)

除了杨的答案,你可以创建一个类别,以获得像这样的全局修复

@interface UINavigationBar (JTDropShadowFix)

@end

@implementation UINavigationBar (JTDropShadowFix)

- (void)awakeFromNib {
    self.clipsToBounds = NO;
}

@end

如果您正在寻找一种不使用类别方法的解决方案,您还可以访问一篇博文,其中讨论如何使用UINavigationController子类来实现相同的修复。

http://ioscodesnippet.com/post/61487770156/custom-shadow-image-on-navigation-bar-ios6-fix

答案 4 :(得分:0)

添加一些上下文:我刚刚使用了我已有1年历史的应用Cocktailicious并将根UINavigationView嵌入到UITabBarController中。之后,旧的UINavigationBar在界面构建器中选中了剪辑子视图属性。

在嵌入过程中,我还为标签栏中的新标签添加了第二个导航控制器。令人惊讶的是,此控制器未选中 Clip Subviews 。感觉像是一个xcode问题。