获取控件私有属性并修改

2016-06-13  本文已影响110人  FMG

原理:利用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"];
上一篇下一篇

猜你喜欢

热点阅读