我正在使用带有自定义背景图片的导航栏。当我想添加自定义阴影图像时,我惊讶地发现即使是默认阴影图像也不可见。
iOS 6在UINavigationBars上引入了一个自动投影,我希望看到它。来自http://www.raywenderlich.com/21703/user-interface-customization-in-ios-6的示例项目证明了这一点。
但是,从Xcode的Master-Detail模板创建一个新项目不会显示阴影。
什么时候显示阴影,什么时候不显示?
答案 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问题。