美文网首页
iOS runtime结合KVC修改一些控件的内部属性

iOS runtime结合KVC修改一些控件的内部属性

作者: AndyRony | 来源:发表于2017-09-14 16:44 被阅读0次

          使用KVC模式来修改控件的内部属性是开发中必不可少的小技巧。众所周知很多UI控件都由很多内部UI控件组合而成的,但是Apple没有对外提供这访问这些控件的API,这样我们就无法正常地访问和修改这些控件的样式。而KVC在大多数情况可下可以解决这个问题。最常用的就是个性化UITextField中的placeHolderText了。下面演示如果修改placeHolder的文字样式。这里的关键点是如果获取你要修改的样式的属性名,也就是key或者keyPath名。

    以UITextField控件为例来说说,首先要修改内部属性,我们得知道对应控件的内部私有属性有哪些,才能对应设置。

    一.runtime获取UITextField的内部属性

    (1)runtime获取内部隐藏属性,导入头文件#import<objc/runtime.h>

    打印可以获取出所有的内部隐藏属性,

    2017-09-14 16:25:55.140 FangXianyuTabbar[2080:222614] _displayLabel

    2017-09-14 16:25:55.140 FangXianyuTabbar[2080:222614] _placeholderLabel

    2017-09-14 16:25:55.142 FangXianyuTabbar[2080:222614] _overriddenPlaceholder

    2017-09-14 16:25:55.142 FangXianyuTabbar[2080:222614] _overriddenPlaceholderAlignment

    (2)使用KVC进行修改:setValue:   forKeyPath方式

    修改之后的结果如图:

    二.补充runtime获取类的开放属性和方法

    相关文章

      网友评论

          本文标题:iOS runtime结合KVC修改一些控件的内部属性

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