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

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

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

使用kvc和断点调试,设置系统私有属性_第1张图片
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 这些属性是怎么获得的呢?

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

如下:


使用kvc和断点调试,设置系统私有属性_第2张图片
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和断点调试,设置系统私有属性)