原理:利用runtime访问控件的私有属性,然后利用KVC修改私有属性
// 这里是便利控件所有属性(public 和 private)找到你想要修改的控件属性,如果你知道你想要修改的控件属性名,跳过这一步直接用KVC修改
// 使用前需要导入头文件#import <objc/runtime.h>
unsigned int count = 0;
Ivar *members = class_copyIvarList([self.myPageControl class], &count);
for (int i = 0; i < count; i++)
{
Ivar var = members[i];
const char *memberAddress = ivar_getName(var);
const char *memberType = ivar_getTypeEncoding(var);
NSLog(@"address = %s ; type = %s",memberAddress,memberType);
}
//KVC 对私有变量的更改
UIImage *normalImage = _normalPageImage ? _normalPageImage : [UIImage imageNamed:@"tweet_btn_share"];
UIImage *currentPageImage = _currentPageImage ? _currentPageImage : [UIImage imageNamed:@"tweet_btn_liked"];
// KVC 主要在这里
[self.myPageControl setValue:normalImage forKeyPath:@"pageImage"];
[self.myPageControl setValue:currentPageImage forKeyPath:@"currentPageImage"];
网友评论