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

Dev*_*fly 5 iphone xcode cocoa-touch ipad ios

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

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];
}
Run Code Online (Sandbox Code Playgroud)

然而,它似乎只是iOS 6(虽然我不能肯定地说 - 我无法在任何地方找到关于此的文档).它在iOS 5上不起作用.

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

aka*_*kyy 1

你可以:

  1. 将包含阴影图像的子视图添加到您的viewController.view
  2. 将包含阴影图像的子视图添加到您的[[UIApplication sharedApplication] keyWindow],这将在您的窗口中全局添加图像。然而,它可能会变得有点难看,例如当显示模式视图控制器时。
  3. 您可以子类化UINavigationBar,对其中的子视图进行一些魔法,然后通过初始化您的 navigationController[[UINavigationController alloc] initWithNavigationBarClass:[YourNavBarSubclass class] toolbarClass:[UIToolbar class]]