获取控件私有属性并修改

原理:利用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"];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,776评论 25 709
  • KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iO...
    黑暗中的孤影阅读 50,144评论 74 441
  • KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iO...
    Fendouzhe阅读 3,914评论 0 6
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,382评论 30 472
  • 连着三天的黑白杂乱的日子。 结束了那本小说了,不一样的视角和故事走向。
    萧咲薇阅读 858评论 0 0