runtime是一个c和汇编写的动态库,将OC和C紧密关联,主要做两件事 :
1、封装C语言的结构体和函数,让开发者在运行时创建、检查或者修改类、对象和方法等等。
2、传递消息,找出方法的最终执行代码。
使用:
1>导入框架 #import 或 #import
2> 以改变 UITextField的 placeholder的颜色为例:
UITextField 没有提供修改placeholder颜色的属性给我们,但是我们可以通过runtime获取UITextField隐藏的成员变量:
```
// 拷贝出所有的成员变量列表
Ivar *ivars = class_copyIvarList([UITextField class], &count);
for (int i = 0; i
// 取出成员变量
Ivar ivar = ivars[I];
// 打印成员变量名字和对应的类型
NSLog(@"%s %s", ivar_getName(ivar), ivar_getTypeEncoding(ivar));
}// 释放
free(ivars)
```
输出所有的成员变量
改变 placeholder 的颜色
UITextField *tf =[[UITextField alloc]initWithFrame:CGRectMake(100, 100, 200 ,30)];
tf.backgroundColor = [UIColor grayColor];
tf.placeholder = @"运行时";
[self.view addSubview:tf];
[tf setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];
结果:
运行结果,修改成功