我在iOS 5中使用UIAppearance设置全局样式。这是一个例子:
[[UIbarButtonItem appearance]
setTtitletextAttributes:someStyle
forState:UIControlStateNormal
];
在大多数情况下看起来不错:
但有些情况下,全球风格看起来很丑陋,就像在电影播放器中一样。
对于电影播放器,我更喜欢使用默认的蓝色按钮。那么我如何只针对后退按钮的外观而不是完成按钮的外观呢?我在定位普通表格单元格和分组表格单元格方面存在类似问题。
答案 0 :(得分:6)
您需要使用UINavigationBar
的自定义子类。我们称之为MyNavigationBar
。然后你可以这样做:
[[UIBarButtonItem appearanceWhenContainedIn:[MyNavigationBar class], nil]
setTintColor:[UIColor redColor]];
它只会影响导航栏中的按钮,而不会影响MPMoviePlayerController
的导航栏。
问题当然是UINavigationController
总是使用基本UINavigationBar
...如果您在代码中创建它。但是,如果您在笔尖中创建它,则可以单击其导航栏(在笔尖的文档大纲中)并在“标识”检查器中更改该栏的类。
答案 1 :(得分:4)
如果在您的AppDelegate中,您只需替换
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navback"]
forBarMetrics:UIBarMetricsDefault];
与
[[UINavigationBar appearanceWhenContainedIn:[UINavigationController class], nil]
setBackgroundImage:[UIImage imageNamed:@"navback"] forBarMetrics:UIBarMetricsDefault];
电影播放器在全屏模式下会有适当的黑条。适用于iOS 5和iOS 6
答案 2 :(得分:-1)
您实际上可以将代理更改为仅定位某些视图层次结构。换句话说,当您要自定义的视图包含在某个视图中时,您可以修改其外观与其他视图不同。因此,首先设置全局(白色)样式,然后调用以下方法来自定义按钮出现在MPMoviePlayerController
或其他任何内容时的外观。
[[UIBarButtonItem appearanceWhenContainedIn:
[MPMoviePlayerController class], nil]
setTitletextAttributes:someStyle
forState:UIControlStateNormal];
如果有帮助,请告诉我!