【问题标题】:Unable to customize UINavigationBar's appearance in iOS SDK:无法在 iOS SDK 中自定义 UINavigationBar 的外观:
【发布时间】:2012-07-05 15:42:00
【问题描述】:

我正在尝试自定义导航 var 的外观,它在我的应用程序中出现了几次(仅供参考:我正在使用情节提要)。由于某种原因,Th 应用程序不起作用(它卡在了行中:

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

在 main.m 文件中,说“线程 1:信号 SIGABRT”。

我写的代码是这样的:

UIImage * TabBarBG = [UIImage imageNamed:@"TabBarBG.png"];
[[UITabBar appearance] setBackgroundImage:TabBarBG];
[[UINavigationBar appearance] setBackgroundImage:TabBarBG];

顺便说一句,标签栏的自定义效果很好,我已经尝试过为 NavBar 使用不同的图片,但为了简单起见,它不在此处!

上面的代码是在appDelegate类的一个叫做“customizeInterface”的方法中找到的,它是从同一个类(appDelegate)的didFinishLaunchingWithOptions方法中调用的。

关于为什么会发生这种情况以及我可以做些什么来让它发挥作用的任何想法?

感谢任何cmets!

【问题讨论】:

  • 它不会“卡住”,UIApplicationMain 在应用程序异常退出时返回,从而中断了运行循环。什么是日志打印?
  • 2012-07-05 18:37:41.324 SocialNow[797:f803] -[_UIAppearance setBackgroundImage:]:无法识别的选择器发送到实例 0x6d42930 2012-07-05 18:37:41.326 SocialNow[797 :f803] *** 由于未捕获的异常 'NSInvalidArgumentException' 终止应用程序,原因:'-[_UIAppearance setBackgroundImage:]:无法识别的选择器已发送到实例 0x6d42930' *** 第一次抛出调用堆栈:(0x13c9022 0x155acd6 0x13cacbd 0x132fed0 0x132fcb2 0x2be 0x12274 0x21183 0x21c38 0x15634
  • 0x12b3ef5 0x139d195 0x1301ff2 0x13008da 0x12ffd84 0x12ffc9b 0x11c65 0x13626 0x290d 0x2875) 终止称为抛出异常(lldb)

标签: objective-c ios image background uinavigationbar


【解决方案1】:

UINavigationBar 的外观 API 不支持名为 setBackgroundImage: 的方法。但它确实支持名为setBackgroundImage:forBarMetrics: 的方法。所以试试:

[[UINavigationBar appearance] setBackgroundImage:TabBarBG forBarMetrics:UIBarMetricsDefault];

【讨论】:

    【解决方案2】:

    此外,您可以通过以下方式更改导航栏标题和阴影颜色(如果它与您的新背景图片冲突):

    https://stackoverflow.com/a/11005059/215845

    【讨论】:

      猜你喜欢
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多