UIAppearance 的“当不包含在"中时 [英] UIAppearance's "when not contained in"

查看:72
本文介绍了UIAppearance 的“当不包含在"中时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在构建一个复杂的 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.

因此,不是使用 UIAppearancewhenContainedIn 方法来指定导致发生修改的类,而是有没有办法排除某些类,即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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆