RunTime运行时机制

runtime是一套比较底层的纯C语言API, 属于1个C语言库, 包含了很多底层的C语言API。

在我们平时编写的Objective-C代码中, 程序运行过程时, 其实最终都是转成了runtime的C语言代码, runtime算是OC的幕后工作者,下面介绍一下用runtime遍历出UITextField的一些隐藏属性,查出后再通过KVC来进行修改这个属性,其他的控件都可使用此类似的方法。

//第一次用到这类的时候就会调用的只会调用一次方法 ,这个方法查的时候用一下 ,用于遍历出UITextField的一些隐藏属性,以后不用这个方法

+ (void)initialize{

unsigned int count = 0;

// 拷贝出所有的成员变量列表   ivars是指向这个数组的指针也是指向首个元素的指针

Ivar *ivars = class_copyIvarList([UITextField class], &count);

for (int i = 0; i < count; ++i) {

//数组名其实就是指向数组首元素的指针  如果指针是指向数组的首元素,就可把指针当数组一样用

Ivar t = ivars[i];

//打印成员变量名  在控制台打印输出查找到属性   _placeholderLabel

NSLog(@"%s",ivar_getName(t));

}

// 释放指针变量 ivars 是拷贝过的所以用完要释放

free(ivars);

}

- (instancetype)initWithFrame:(CGRect)frame{

if(self = [super initWithFrame:frame]){

[self setupUI];

}

return self;

}

- (void)awakeFromNib{

[super awakeFromNib];

[self setupUI];

}

- (void)setupUI{

self.textColor = [UIColor whiteColor];

//tintColor 可设置光标的颜色等

self.tintColor = self.textColor;

//一加载这个TextField时让里面的占位字符变灰色 就让文本输入框失去焦点z(因为在重写失去焦点时设置了文字变灰色)

[self resignFirstResponder];

}

// 当文本输入框成为第一响应者就会调用

- (BOOL)becomeFirstResponder{

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

return [super becomeFirstResponder];

}

// 当文本输入框失去焦点的时个会调用的方法

- (BOOL)resignFirstResponder{

//通过 KVC 访问 _placeholderLabel.textColor 属性 设置颜色

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

return [super resignFirstResponder];

}

转载于:https://www.cnblogs.com/chenweb/p/7096802.html

RunTime运行时在iOS中的应用之UITextField占位符placeholder相关推荐

  1. iOS 进阶 - RUNTIME 运行时

    2019独角兽企业重金招聘Python工程师标准>>> 什么是 RUNTIME ? 1.Runtime就是运行时,OC就是运行机制也就是在运行的时候的一些机制.其主要有消息机制. 2 ...

  2. java能调用python吗_如何使用运行时在Java中调用python程序 - java

    我想用来自Java的参数调用python程序.但是我的输出是空白.代码在这里. Python代码在这里: import sys print(sys.argv[1]) Java代码在这里: public ...

  3. android textview 绝对位置,android – 在运行时在RemoteView中设置TextView的位置

    亲爱的,我试图在appwidget中设置TextView的位置. 基本上,TextView可以直接访问属性: myRemoteView.setTextColor(R.id.myTextView,Col ...

  4. iOS运行时Runtime浅析

    运行时是iOS中一个很重要的概念,iOS运行过程中都会被转化为runtime的C代码执行.例如[target doSomething];会被转化成objc)msgSend(target,@select ...

  5. UITextView中的占位符

    我的应用程序使用UITextView . 现在,我希望UITextView具有类似于可以为UITextField设置的占位符. 这个怎么做? #1楼 简单的方法,只需使用以下UITextViewDel ...

  6. SQL算法中的变量使用占位符动态赋值

    需求: 1.每张表的SQL算法配置到数据库的配置表中 2.SQL算法中的条件统一使用占位符填充 3.当执行sql时需要将查询出来的SQL算法中的占位符动态赋值 一.真实案例还原 这里拿表进行演示 1. ...

  7. 深度学习实战(4)如何向BERT词汇表中添加token,新增特殊占位符

    向BERT词汇表中添加token 问题表述 添加特殊占位符号 add_special_tokens 其他占位符接口 报错与解决方案 问题表述 在实际应用或者学术科研过程中,我们常常需要添加一些特殊的占 ...

  8. C语言中的各种占位符

    C语言占位符 占位符这个名词想必都不陌生,C语言中的%d,%c就再熟悉不过了,那么C语言中究竟都有哪些占位符呢,又都表示什么含义呢? %d:整型 %ld:长整型 %o:八进制数形式整数 %u:十进制数 ...

  9. TensorFlow中张量,变量、常量、占位符概念

    1.总结TensorFlow中的张量概念 张量:数据结构:多维数组 零阶张量表示标量(scalar),也就是一个数: 一阶张量为向量(vector),也就是一个数组: N阶张量可以理解为一个n维数组: ...

最新文章

  1. Netty(一) SpringBoot 整合长连接心跳机制
  2. Java中expecial,RxJava 学习笔记 (一)
  3. 点个外卖搞定「软中断」
  4. 【转】python中的对象拷贝
  5. 第一章:认识Redhat Linux
  6. 证明kruskal算法求解图的最小生成树具有贪心选择性质_将并查集应用在图论中的最小生成树算法——Kruskal...
  7. vue中v-for的使用
  8. 你对求生欲,一无所知!| 今日最佳
  9. 从oracle里面取直,45个非常有用的 Oracle 查询语句小结
  10. 【C语言】使用指针得到数组的最后一个数
  11. 中考计算机flash试题及答案,2015中考信息技术试题Flash操作题2-25(终)
  12. 【VMware vSAN 6.6】5.4.vSAN 配置提示:vSAN硬件服务器解决方案
  13. codejock(codejock chart类)
  14. 《道德经》和《圣经》中的“道”
  15. 推荐1位AI产品经理求职信息(企业方可要简历),新增3个JD(共计59个、AI PM可内推)...
  16. 华为云MVP周峥:气象预报是个技术活,大数据、超算、AI,缺一不可
  17. 企业数字化转型saas电商系统(已开源)
  18. MacBook Pro死机强制重启键
  19. 404 Not Found [IP: 91.189.91.39 80] 解决办法:换源,还是换源 !!
  20. java 取一个数的各个位数

热门文章

  1. 第二百七十五节,MySQL数据库安装和介绍
  2. 纳税服务系统【异常处理、抽取BaseAction】
  3. win7命令行 端口占用 查询进程号 杀进程
  4. 利用partition分组查询 查询每个分组第一条数据
  5. dede调用头条非头条
  6. 浅析Android中的消息机制
  7. 教育技术研究生必读书目(转载)
  8. 利用霍夫变换做直线检测的原理及OpenCV代码实现
  9. VS2012及VS系列怎样屏蔽CMD窗口~
  10. OVS对VXLAN报文解封包