【问题标题】:Custom Nav Bar, Button-compatibility issues with iOS6自定义导航栏,iOS6 的按钮兼容性问题
【发布时间】:2014-01-31 08:37:55
【问题描述】:

我正在开发的应用程序有一个自定义的导航栏。在我的 AppDelegate.m 中,我做了以下事情:

  • setBackgroundImage 已将导航栏的默认颜色替换为我自己的 .png 图像之一;
  • setTitleTextAttributes:已设置为白色;
  • setTintColor:已设置为白色;

    - (void)customizeUserInterface {
        [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navBar"] forBarMetrics:UIBarMetricsDefault];
        [[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],NSForegroundColorAttributeName, nil]];
        [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
    }
    

在 iOS 7 中一切看起来都很好,但在运行 iOS 6 的设备上,导航栏按钮是白底白字,因为虽然色调颜色会改变 iOS 7 中按钮的文本(因为所有按钮都在 iOS 7 中- text),在 iOS 6 中设置 tint color 调整按钮的背景,文本保持白色。所以在 iOS 6 中,导航栏按钮是白色的,带有白色文本。

我更喜欢我的表格在 iOS 7 中的外观,并且不想仅仅因为与 iOS 6 的向后兼容性不配合而对其进行更改。

有没有人可以解决这个问题。有没有办法以编程方式更改导航栏圆形记录按钮的背景颜色或仅更改圆形记录按钮中的文本 - 同时不改变 iOS 7 中的外观?

或者有没有办法有条件地设置这些更改?换句话说,我是否可以通过编程方式将自定义导航栏设置为仅出现在 iOS 7+ 的设备上,并为之前的所有 iOS 版本使用默认值?

或者还有什么我没有想到的聪明的东西?

谢谢!

【问题讨论】:

  • 在 customizeUserInterface 方法中,我会推荐一个大的 if/else if 语句来测试设备的版本。如果是 iOS 7,请执行此操作,但如果是 iOS 6,请执行此操作。

标签: ios objective-c uinavigationbar uinavigationitem


【解决方案1】:

嘿,以编程方式控制你的东西真的是可能的。在 ios7 中您有自己的方法可以做到,而且在 ios6 中您肯定已经做到了。

这是检查版本的link。

现在你可以有条件地做事了。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    相关资源
    最近更新 更多