在deviseUIA外观时如何针对特定的UIView?
我用UIA设置iOS 5的全球风格。 这是一个例子:
[[UIbarButtonItem appearance] setTtitletextAttributes:someStyle forState:UIControlStateNormal ];
在大多数情况下看起来不错:
但是也有一些情况是全球风格看起来很丑,就像电影播放器一样。
对于电影播放器,我宁愿有默认的蓝色button。 那么我怎么只瞄准后退button的外观而不是完成button的外观呢? 我有针对正常表格单元格和分组表格单元格的类似问题。
您实际上可以将代理更改为仅针对某些视图层次结构。 换句话说,当你想要定制的视图被包含在一个特定的视图中,你可以修改它的外观不同于其余的。 所以先设置你的全局(白色)风格,然后调用下面的方法来自定义button出现在MPMoviePlayerController
或其他任何地方的外观。
[[UIBarButtonItem appearanceWhenContainedIn: [MPMoviePlayerController class], nil] setTitletextAttributes:someStyle forState:UIControlStateNormal];
让我知道如果有帮助!
您需要使用UINavigationBar
的自定义子类。 我们称之为MyNavigationBar
。 那么你可以这样做:
[[UIBarButtonItem appearanceWhenContainedIn:[MyNavigationBar class], nil] setTintColor:[UIColor redColor]];
它只会影响导航栏中的button,而不会影响MPMoviePlayerController
的导航栏。
当然,问题是UINavigationController
总是使用一个基本的UINavigationBar
…如果你在代码中创build它。 但是,如果您在笔尖中创build它,则可以单击其导航栏(在笔尖的文档大纲中),然后在“标识”检查器中更改该栏的类。
如果在你的AppDelegate你只是replace
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navback"] forBarMetrics:UIBarMetricsDefault];
同
[[UINavigationBar appearanceWhenContainedIn:[UINavigationController class], nil] setBackgroundImage:[UIImage imageNamed:@"navback"] forBarMetrics:UIBarMetricsDefault];
电影播放器将在全屏模式下具有适当的黑条。 适用于iOS 5和iOS 6