ios下便利某个类的属性(包括私有属性)
来源:互联网 发布:ubuntu 16.04 jenkins 编辑:程序博客网 时间:2024/06/15 01:45
在ios中,我们经常会有一些自定义的需求.但是有些需要修改的属性系统并没有抛出方法给我们修改.
作为一个对ios开发有点儿基础的人,都知道看到readOnly的属性可以通过setValueForKey来进行修改.
但是如果这个属性在.h里面搜索不到.是一种以私有属性的方式存在的属性怎么办.
我们可以利用runtime机制来获取私有属性.
首先.我们需要:
#import <objc/runtime.h>
导入一下runtime的头文件.
比如我想要修改UIDataPicker的文字颜色.
我们可以先便利一下UIDataPicker的属性:
unsigned int outCount =0;
Ivar *ivars =class_copyIvarList([UIDatePickerclass], &outCount);
for (NSInteger i =0; i < outCount; ++i) {
// 遍历取出该类成员变量
Ivar ivar = *(ivars + i);
NSLog(@"\n name = %s \n type = %s",ivar_getName(ivar),ivar_getTypeEncoding(ivar));
}
// 根据内存管理原则释放指针
free(ivars);
然后我们发现.UIDataPicker里面有个UIPickerView的属性.然后我们去便利UIPickerView的属性:
unsigned int outCount =0;
Ivar *ivars =class_copyIvarList([UIPickerViewclass], &outCount);
for (NSInteger i =0; i < outCount; ++i) {
// 遍历取出该类成员变量
Ivar ivar = *(ivars + i);
NSLog(@"\n name = %s \n type = %s",ivar_getName(ivar),ivar_getTypeEncoding(ivar));
}
// 根据内存管理原则释放指针
free(ivars);
发现UIPickerView里面有一个textColor的属性.
因为这个属性是UIPickerView的属性.所以不能直接使用:
[self.dataPickerViewsetValue:[UIColorredColor]forKey:@"textColor"];
或者是:
[self.dataPickerViewsetValue:[UIColorredColor]forKey:@"pickerView.textColor"];
来修改颜色
而是应该使用keyPath来修改文字的颜色:
[self.dataPickerViewsetValue:[UIColorredColor]forKeyPath:@"pickerView.textColor"];
至此.我们已经修改完毕了.不知道大家学会了没有
- ios下便利某个类的属性(包括私有属性)
- iOS定义私有属性
- Scala:类的属性、对象私有属性
- iOS中访问和修改一个类的私有属性
- iOS 获取内部私有属性的方法
- iOS - 私有成员变量,私有属性的写法选择
- 加入属性、便利构造器的类的初始化
- 判断某个属性或者类的方法有某个属性
- 浏览器的私有属性
- iOS中的私有属性问题
- 通过运行时获取某个类下所有的属性
- 类的构造函数/私有属性,私有属性不‘绝对’私有
- oc语言类 便利初始化函数 便利构造器 属性
- python类私有属性
- 反射访问类的私有属性对象的私有方法
- OC的属性和便利构造器
- 子类继承父类的私有属性
- 子类继承父类的私有属性
- 如果有只时光鸡 - 语义化的感悟
- RE库
- 认证机构信息管理软件 认证机构ERP软件 qcycloud
- SDUT 2056-完美网络
- Cpp -C++类中成员变量的初始化总结
- ios下便利某个类的属性(包括私有属性)
- js学习笔记之阻止冒泡和默认事件
- nginx优化
- Python笔记(二)--变量类型
- 在没有用户ID或者任何唯一性标识的情况下做个唯一标识
- springboot无法完成变量从pom到.properties文件自动替换的问题
- 可并堆(左偏树)简单学习
- QT 5.6 自带的数据库QSqlite 使用实例
- Graph’s Cycle Component(并查集优化)