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

2017-09-14  本文已影响0人  AndyRony

      使用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获取类的开放属性和方法

上一篇 下一篇

猜你喜欢

热点阅读