ios7 xcode 5 GM:UIBarButtonItem的颜色和iOS 6设备上选定的UISegmentedControl部分保持默认颜色

use*_*317 8 iphone

我现在将ios6应用程序移植到ios7 sdk(使用Xcode 5和mavericks),我试图更改UIBarButtonItem颜色,这是我尝试做的:

self.navigationController.navigationBar.tintColor 
Run Code Online (Sandbox Code Playgroud)

- 为条形更改颜色,但不对项目进行更改

[[UINavigationBar appearance] setTintColor:[UIColor greenColor]];
[[UIBarButtonItem appearance] setTintColor:[UIColor greenColor]];
Run Code Online (Sandbox Code Playgroud)

- 不起作用,颜色相同

self.navigationItem.rightBarButtonItem.tintColor = [UIColor greenColor];
self.navigationItem.leftBarButtonItem.tintColor = [UIColor greenColor];    
Run Code Online (Sandbox Code Playgroud)

- 不起作用,颜色相同

    UIBarButtonItem *close = [[UIBarButtonItem alloc] 
                             initWithTitle:NSLocalizedString(@"Close",@"") 
                                     style:UIBarButtonItemStyleDone target:self
                                    action:@selector(closeAddressBook:)];

           close.tintColor = [UIColor greenColor];
Run Code Online (Sandbox Code Playgroud)

- 不起作用,颜色相同

  for self.filterSegment.tintColor =  [UIColor greenColor] where UISegmentedControl *filterSegment;
Run Code Online (Sandbox Code Playgroud)

我看到未选择的段具有正确的颜色,但所选的段是相同的错误颜色.

有任何想法吗?

Dog*_*fee 15

通过WWDC 2013 - 自定义应用程序的iOS 7外观,找出需要完成的工作.

self.navigationController.navigationBar.tintColor = [UIColor redColor];
Run Code Online (Sandbox Code Playgroud)

这将过滤到您应用中的其他视图,因此放置在初始屏幕上,如果您按下到下一个屏幕,您将看到后退按钮也是红色.

要更改导航栏颜色使用

self.navigationController.navigationBar.barTintColor = [UIColor greenColor];
Run Code Online (Sandbox Code Playgroud)

如果您的应用程序适用于低于iOS7的设备,则应检查它是否响应选择器

if([self.navigationController.navigationBar respondsToSelector:@selector(barTintColor)]) {

}
Run Code Online (Sandbox Code Playgroud)

  • @ user170317是的,它会崩溃,因此在我的答案结束时if语句的原因. (3认同)
  • 你不应该检查版本.你应该检查功能:if([self.navigationController.navigationBar respondsToSelector:@selector(barTintColor)]){...} (2认同)

Kei*_*edy 10

对于iOS7,当我希望更改个人的颜色时,此代码适用于我UIBarButtonItem:

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Title" style:UIBarButtonItemStyleBordered target:self action:nil];
[barButtonItem setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor]} forState:UIControlStateNormal];
self.navigationItem.leftBarButtonItems = @[barButtonItem];
Run Code Online (Sandbox Code Playgroud)