星空网 > 软件开发 > 操作系统

RunTime的作用

Runtime也就是运行时,是苹果官方提供的一套C语音库,那有什么作用呢?简单的来说,Runtime可以做很多的底层操作,比如说访问隐藏的一些成员变量,成员方法,当然包括了私有的成员变量,成员方法.

举个简单的例子,如果我们想要修改TextField的placeholder的颜色,那该怎么做? 在TextField的所提供的api中并没有直接提供修改的方法,当然还是有attributedPlaceholder的这个方法,如果单独来看这个方法,没有接触过的话,不会知道这个可以修改placeholder的颜色,那么 我们可以通过Runtime的方法,打印出TextField的所用成员变量,那么一定可以找到我们想要的属性,而系统自带的属性,通常都是只读属性,那么我们只需要通过KVC就可以实现赋值,KVC的最大的作用就是给只读属性赋值拉~~

使用Runtime的话,需要引头文件

#import <objc/runtime.h>

// 程序刚开始的时候会运行,bi且只会运行一次+ (void)initialize {  [self getIvars];}+ (void)getIvars {  unsigned int count = 0;    // 拷贝出所有的成员变量列表  Ivar *ivars = class_copyIvarList([UITextField class], &count);    for (int i = 0; i < count; i ++) {    // 取出成员变量    Ivar ivar = ivars[i];    QYLog(@"%s, %s", ivar_getName(ivar), ivar_getTypeEncoding(ivar));  }  // 释放  free(ivars);}

通过 打印的结果可以发现

RunTime的作用images/loading.gif' data-original="http://images2015.cnblogs.com/blog/890522/201604/890522-20160413223318520-635503382.png" />

通过KVC就可以简单的处理了placeholder的颜色

[self setValue:self.textColor forKeyPath:@"_placeholderLabel.textColor"];

那么,上面也说了也可以通过attributedPlaceholder的这个方法,那么怎么做,简单的介绍一下 ,纯属个人见解~~

  // 文本属性    NSMutableDictionary *attrs = [NSMutableDictionary dictionary];  attrs[NSForegroundColorAttributeName] = [UIColor redColor];    // NSAttributedString 一种带有属性的文字  NSAttributedString *myTextField = [[NSAttributedString alloc]initWithString:@"我的世界" attributes:attrs];  self.MyTextField.attributedPlaceholder = myTextField;

attributedPlaceholder这个方法是一种带有属性的文字,通过系统提供的特定的key来改变一些属性

RunTime的作用

哈~ 效果丑了点

但这个方法也之类似的还有一个类NSMutableAttributedString, NSMutableAttributedString具有attributedPlaceholder的所有方法,但是自身还具备区间使用

// 通过区间,来使每一个字都发生变化NSMutableAttributedString *myTextField = [[NSMutableAttributedString alloc] initWithString:@"我的世界"]; // 第一个字, 天蓝色,默认字体大小  [myTextField setAttributes:@{NSForegroundColorAttributeName : [UIColor cyanColor]} range:NSMakeRange(0, 1)];// 第二个字, 黄色,字体20号  [myTextField setAttributes:@{                NSForegroundColorAttributeName : [UIColor yellowColor],                NSFontAttributeName : [UIFont systemFontOfSize:20]                } range:NSMakeRange(1, 1)];// 第三个字, 红色,默认字体大小  [myTextField setAttributes:@{NSForegroundColorAttributeName : [UIColor redColor]} range:NSMakeRange(2, 1)];// 第四个字, 紫色,默认字体大小  [myTextField setAttributes:@{NSForegroundColorAttributeName : [UIColor purpleColor]} range:NSMakeRange(3, 1)];  self.MyTextField.attributedPlaceholder = myTextField;

不同attributedPlaceholder, 虽然使用比较麻烦,但是所达到的效果还是挺令人惊讶的

RunTime的作用

 

.. 。.. 




原标题:RunTime的作用

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

怎么下国际版tiktok:https://www.goluckyvip.com/tag/82244.html
ios怎么在国内看tiktok:https://www.goluckyvip.com/tag/82245.html
tiktok有播放就有收益吗:https://www.goluckyvip.com/tag/82246.html
tiktok发视频有收益吗:https://www.goluckyvip.com/tag/82247.html
如何用tiktok挣钱:https://www.goluckyvip.com/tag/82248.html
ios版tiktok下载:https://www.goluckyvip.com/tag/82249.html
餐饮供应链产业如何进化破局?:https://www.kjdsnews.com/a/1836535.html
14点聊电商:重庆品胜科技与星苹台达成合作 助力部队现代化后勤建设 :https://www.kjdsnews.com/a/1836536.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流