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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iO...
    黑暗中的孤影阅读 50,211评论 74 441
  • KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iO...
    朽木自雕也阅读 5,534评论 6 1
  • KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iO...
    Fendouzhe阅读 3,945评论 0 6
  • 姓名:母光艳 公司:宁波贞观电器 第235期,利他二组 【日精进打卡第170天】 【知-学习】 诵读《六项精进》大...
    母光焱阅读 1,364评论 0 0
  • 林丹 作为运动员,比赛就是有输有赢,如果他真是我的克星的话,那就应该每次都赢我。 我们都很平凡,但我们可以做一些不...
    孤独的行路人阅读 3,328评论 0 0

友情链接更多精彩内容