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

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

比如想要自定义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 什么是 KVC KVC 是 Key-Value-Coding 的简称。 KVC 是一种可以直接通过字符串的...
    LeeJay阅读 2,221评论 6 41
  • 你要知道的KVC、KVO、Delegate、Notification都在这里 转载请注明出处 http://www...
    WWWWDotPNG阅读 2,998评论 2 5
  • 人们通常不愿意承认自己的错误,总爱为自己辩解,但同时又不能容忍他人的过失,一旦有人做了错事,旁观者就立刻上去责备,...
    张伟kk阅读 362评论 0 0
  • 最近想追剧《我的体育老师》,可是看了两三集就看不下去了,不是因为剧情水平什么的,我不是行家根本不想对此评论,二是实...
    悟空不是大圣阅读 857评论 0 0
  • 脑洞开,请仔细阅读。 献给吾友庞子彦,生日快乐。 生活中,我们说这是一只鸟(终于明白标题的重要性了,于是乎准备尝试...
    早上好joe阅读 880评论 2 1