3

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

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

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

阴影究竟何时显示,何时不显示?

4

5 回答 5

3

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

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

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

于 2012-11-26T13:21:49.583 回答
1

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

于 2013-02-11T11:08:46.933 回答
1

半年后才发现的变通方法,其实很简单:

self.navigationController.navigationBar.clipsToBounds = NO;

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

于 2013-05-22T07:51:12.147 回答
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

于 2013-09-17T09:59:00.767 回答
0

添加一些上下文:我刚刚使用了我 1 岁的应用Cocktailicious并将根嵌入UINavigationViewUITabBarController. 之后,旧的在界面生成器中检查UINavigationBar了属性Clip Subviews 。

在嵌入过程中,我还为标签栏中的新标签添加了第二个导航控制器。令人惊讶的是,这个控制器带有未选中的剪辑子视图。感觉像一个xcode问题。

于 2014-03-29T04:10:27.643 回答