UIAppearance 的“当不包含在"中时 [英] UIAppearance's "when not contained in"
问题描述
我目前正在构建一个复杂的 UIAppearance
修饰符网络*,并且遇到了一个问题.
I am currently spinning a complex web of UIAppearance
modifiers*, and have come across a problem.
我使用 FlatUIKit 的自定义 UIBarButton
外观协议导致 MFMailComposerViewController
抱怨并停止工作.
My usage of FlatUIKit's custom UIBarButton
appearance protocol is causing MFMailComposerViewController
to complain and stop working.
因此,不是使用 UIAppearance
的 whenContainedIn
方法来指定导致发生修改的类,而是有没有办法排除某些类,即when not包含在?
Therefore, instead of using UIAppearance
's whenContainedIn
method to specify classes that cause modification to occur, is there a way to exclude certain classes, i.e. a "when not contained in"?
*我说的是 UIAppearance
协议,该协议用于在应用的委托中预定义对象外观设置.
*I am talking about the UIAppearance
protocol that is used to predefine object appearance settings in the app's delegate.
推荐答案
您可以使用 appearanceWhenContainedIn:
指定 nil 修改,这将给出默认外观:
You can use appearanceWhenContainedIn:
to specify nil modification, which will give the default appearance:
[[UIBarButton appearance] setBarTintColor:[UIColor redColor]];
[[UIBarButton appearanceWhenContainedIn:[MFMailComposerViewController class], nil] setBarTintColor:nil];
从 iOS 9 SDK 开始,还有
As of iOS 9 SDK, there is also
[[UIBarButton appearance] setBarTintColor:[UIColor redColor]];
[[UIBarButton appearanceWhenContainedInInstancesOfClasses:@[[MFMailComposerViewController class]] setBarTintColor:nil];
可以像这样使用 Swift-2:
Which can be used Swift-2 like so:
UIBarButton.appearance().barTintColor = UIColor.redColor()
UIBarButton.appearanceWhenContainedInInstancesOfClasses([MFMailComposerViewController.self]).barTintColor = nil
这篇关于UIAppearance 的“当不包含在"中时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!