美文网首页程序员
使用kvc和断点调试,设置系统私有属性

使用kvc和断点调试,设置系统私有属性

作者: hcr123yeah | 来源:发表于2016-04-13 01:51 被阅读173次

    苹果从某个版本后开始不再暴露自己的私有属性,这给我们开发中带来了一些困扰

    比如想要自定义UIPageControl的图片
    要达到如下效果:

    Simulator Screen Shot 2016年4月13日 上午1.11.11.png
    通过搜索UIPageControl的头文件,并不能发现任何有关image的属性,所以就要用到kvc来进行设置
    当然也可以使用runtime,但是没有以下方法简便,就不做介绍啦~

    核心代码如下:

     [self.pageControl setValue:[UIImage imageNamed:@"current"] forKey:@"_currentPageImage"];
     [self.pageControl setValue:[UIImage imageNamed:@"other"] forKey:@"_pageImage"];
    

    对于初学者而言_currentPageImage, _pageImage 这些属性是怎么获得的呢?

    这里介绍一种方法 : 断点调试

    如下:


    Snip20160413_2.png

    TextField

    同样以上的方法,也可以设置TextField占位文字的颜色(默认是灰色的)

    设置前:

    屏幕快照 2016-04-13 上午1.41.50.png

    设置后:

    效果如下


    屏幕快照 2016-04-13 上午1.38.39.png

    代码:

    
     
    #import "ViewController.h"
    
    @interface ViewController ()
    @property (weak, nonatomic) IBOutlet UITextField *textField;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
       UITextField *textField =  self.textField;
    
        UILabel *label = [textField valueForKeyPath:@"_placeholderLabel"];
        label.textColor = [UIColor blueColor];
    }
    
    @end
    

    当然还有更多的属性,神秘的功能,就期待你的发现啦😏

    相关文章

      网友评论

        本文标题:使用kvc和断点调试,设置系统私有属性

        本文链接:https://www.haomeiwen.com/subject/sjpwlttx.html