外观代理 - 适用于iOS 5的setShadowImage替代方案?

时间:2012-10-02 13:00:48

标签: iphone ios xcode cocoa-touch ipad

您好我正在使用此代码设置导航栏的阴影图像:

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(虽然我不能肯定地说 - 我无法在任何地方找到关于此的文档)。它在iOS 5上不起作用。

是否存在某种替代方案 - 在导航栏下全局设置图像? 我想到了自定义UIView,但是如何在全球范围内做到这一点?

2 个答案:

答案 0 :(得分:1)

你可以:

  1. 将包含阴影图像的子视图添加到viewController.view
  2. 将包含阴影图像的子视图添加到[[UIApplication sharedApplication] keyWindow],这将在窗口中全局添加图像。但是,它可能会有点难看,例如在显示模态视图控制器时。
  3. 你可以继承UINavigationBar,用子视图做一些魔术,然后通过[[UINavigationController alloc] initWithNavigationBarClass:[YourNavBarSubclass class] toolbarClass:[UIToolbar class]]
  4. 初始化你的navigationController

答案 1 :(得分:0)

shadowImage仅限ios6:

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