Xcode中提供的基本框架 UIKit
是不开源的,我们能看到的基本控件的成员变量都是@public
--共有的,一些私有的成员变量@private
我们是看不到的;</br>
举个例子:UITextField
中的属性有哪些呢?</br>
图片中展示的是一部分
共有的属性
,已经非常的齐全,供我们平时开发使用,但是,众所周知,UITextField
有一个功能是设置背景文字——
Snip20170609_2.png
如果这个时候有一个需求:改变背景文字的颜色
如何做呢?
方法有几种:
方法一:<a>富文本技术</a> ---- 这个技术下次再说;
方法二:<a>用UITextField自身属性设置</a> -----今天写一个
<h6>今天重点说一下如果获取UITextField中私有的变量:</h6>
> 能够拿到的成员变量已经在图中了,自己去找吧,没有设置背景文字颜色的!
很明确的告诉大家,
UITextField
中有设置背景文字颜色的属性!</br>
<pre>
// 调用本类的时候,只会调用一次
+(void)initialize {
unsigned int count = 0;
// 获取私有成员变量列表
Ivar *ivars = class_copyIvarList([UITextField class], &count);
// 遍历私有成员变量
for (int i = 0; i < count; i++) {
// 获取私有成员变量地址并赋值
Ivar ivar = *(ivars + i);
// 打印出相应的成员变量
NSLog(@"%s",ivar_getName(ivar));
}
}
</pre>
其中我们会发现
Snip20170609_3.png<pre>>可以通过<code>_placeholderLabel.color</code>设置背景文字的颜色</pre>
<blockquote>能够获取到相应的私有成员变量,具体设置如下:</blockquote>
<pre><code>[self setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];</code></pre>
运行结果:
Snip20170609_5.png
网友评论