美文网首页
使用UIAppearance

使用UIAppearance

作者: Brice_Zhao | 来源:发表于2016-08-13 01:18 被阅读62次

@protocol UIAppearance :<NSObject> 

该协议提供了可以一次性设定整个app中系统控件的外观的方法. 所以当我们需要自定义我们所用的控件的外观的时候就可以使用该方法来实例化对象

比如可以在UINavigationController的`+(void)initialize`中去设置`UINavigationBar`的背景图片:

`UINavigationBar *navBar = [UINavigationBar appearanceWhenContainedIn:self, nil];`

`[navBar setBackgroundImage:[UIImage imageNamed:@"NavBar64"] forBarMetrics:UIBarMetricsDefault];`

这样在整个app中的系统的navBar的背景图片就都是该图片了!

感觉是在改变整个app中某些系统控件的外观上,这的确是一个很方便的方法

刚才用到的appearance方法是UIAppearance协议中的一个方法。根据官方文档的说法,它返回的是一个类的外观代理。可以通过给这个外观代理发送改变外观的消息,来达到自定义这个类的实例的外观的效果。

但是需要注意的是,使用外观代理改变控件的默认外观,只会对之后出现在窗口上的视图有效,但并不会改变之前就已经在窗口上的视图。

除了appearance方法,UIAppearance还有这些方法,来处理出现在特定容器中,或者是特定trait collection中的控件:

* + (instancetype)appearanceWhenContainedIn:(nullable Class)ContainerClass

* + (instancetype)appearanceForTraitCollection:(UITraitCollection *)trait

* + (instancetype)appearanceForTraitCollection:(UITraitCollection *)trait whenContainedIn:(nullable Class)ContainerClass

而在系统控件中,只有被`UI_APPEARANCE_SELECTOR`标签标记的方法,才支持使用外观代理来指定。

不过也可能有比较特殊的情况,试了一下,比如UILabel中的backgroundColor就不支持使用appearance方法设定

相关文章

  • 使用UIAppearance

    @protocol UIAppearance : 该协议提供了可以一次性设定整个app中系统控...

  • ios注意问题

    1.使用UIAppearance注意的问题 如果不熟悉可以点击了解, UIAppearance它的目的就是设置全局...

  • UIAppearance使用详解

    iOS UIAppearance使用详解 iOS5及其以后提供了一个比较强大的工具UIAppearance,我们通...

  • UIAppearance

    今天想聊的是UIKit: UIAppearance UIAppearance是什么? UIAppearance实际...

  • UIAppearance使用(转)

    iOS5及其以后提供了一个比较强大的工具UIAppearance,我们通过UIAppearance设置一些UI的全...

  • UIAppearance学习和使用

    我们可以通过UIAppearance协议的方法来给整个项目中某一类控件添加全局样式,或者项目中某个类的子类控件添加...

  • 浅尝UIAppearance的使用

    相信细心的大家会注意到UIView类中遵守了一个开放的协议UIAppearance,于是作者抽时间做了一些小的尝试...

  • App主题

    UIAppearance Tutorial

  • TabBarItem 图片和文字定制

    通过UIAppearance设置一些UI的全局效果 使用appearance设置TabBarItem文字效果最好采...

  • UINavgationBar专题

    1.文档: 翻译: 2.UINavigationBar遵从了UIAppearance协议,一般我们使用于[UINa...

网友评论

      本文标题:使用UIAppearance

      本文链接:https://www.haomeiwen.com/subject/mymesttx.html