获取控件私有属性并修改

原理:利用runtime访问控件的私有属性,然后利用KVC修改私有属性

  // 这里是便利控件所有属性(public 和 private)找到你想要修改的控件属性,如果你知道你想要修改的控件属性名,跳过这一步直接用KVC修改

  // 使用前需要导入头文件#import 
    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"];

你可能感兴趣的:(获取控件私有属性并修改)