外观代理 – setShadowImage替代iOS 5?

你好我正在使用这段代码来设置我的导航栏的阴影图像:

if ([self.navigationController.navigationBar respondsToSelector:@selector(shadowImage)]) { [[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"nav-bar-shadow"]]; [[UIToolbar appearance] setShadowImage:[UIImage imageNamed:@"tool-bar-shadow"] forToolbarPosition:UIToolbarPositionAny]; } 

不过,这似乎只是iOS 6(虽然我不能肯定地说 – 我无法在任何地方find这方面的文档)。 它不适用于iOS 5。

有没有其他的select – 在导航栏下全局设置图像? 我想到了自定义UIView,但如何做到这一点全球?

您可以:

  1. 将包含阴影图像的子视图添加到viewController.view
  2. 将包含阴影图像的子视图添加到[[UIApplication sharedApplication] keyWindow] ,该图像将在窗口中全局添加图像。 但是,当显示一个模态视图控制器时,它会变得有点丑陋。
  3. 你可以UINavigationBar ,在那里做一些有子视图的魔术,然后通过[[UINavigationController alloc] initWithNavigationBarClass:[YourNavBarSubclass class] toolbarClass:[UIToolbar class]]初始化你的navigationController [[UINavigationController alloc] initWithNavigationBarClass:[YourNavBarSubclass class] toolbarClass:[UIToolbar class]]

shadowImage只是ios6:

 @property(nonatomic,retain) UIImage *shadowImage NS_AVAILABLE_IOS(6_0) UI_APPEARANCE_SELECTOR;