修改UITextField的placeholder颜色
2016-07-03 22:24
555 查看
方法一:通过attributedPlaceholder来修改
方法二:自定义UITextField,重写drawPlaceholderInRect方法
方法三:使用KVC
## 运行时(Runtime)
- 苹果官方一套C语言库
- 能做很多底层操作(比如访问隐藏的一些成员变量\成员方法....)
- 访问成员变量举例
// 文字属性 NSMutableDictionary *attrs = [NSMutableDictionary dictionary]; attrs[NSForegroundColorAttributeName] = [UIColor grayColor]; // NSAttributedString : 带有属性的文字(富文本技术) NSAttributedString *placeholder = [[NSAttributedString alloc] initWithString:@"手机号" attributes:attrs]; self.phoneField.attributedPlaceholder = placeholder; NSMutableAttributedString *placehoder = [[NSMutableAttributedString alloc] initWithString:@"手机号"]; [placehoder setAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]} range:NSMakeRange(0, 1)]; [placehoder setAttributes:@{ NSForegroundColorAttributeName : [UIColor yellowColor], NSFontAttributeName : [UIFont systemFontOfSize:30] } range:NSMakeRange(1, 1)]; [placehoder setAttributes:@{NSForegroundColorAttributeName : [UIColor redColor]} range:NSMakeRange(2, 1)]; self.phoneField.attributedPlaceholder = placehoder; ```
方法二:自定义UITextField,重写drawPlaceholderInRect方法
- 重写方法 ```objc - (void)drawPlaceholderInRect:(CGRect)rect { [self.placeholder drawInRect:CGRectMake(0, 10, rect.size.width, 25) withAttributes:@{ NSForegroundColorAttributeName : [UIColor grayColor], NSFontAttributeName : self.font}]; } ```
方法三:使用KVC
```objc [self setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"]; ```
## 运行时(Runtime)
- 苹果官方一套C语言库
- 能做很多底层操作(比如访问隐藏的一些成员变量\成员方法....)
- 访问成员变量举例
```objc unsigned int count = 0; // 拷贝出所有的成员变量列表 Ivar *ivars = class_copyIvarList([UITextField class], &count); for (int i = 0; i<count; i++) { // 取出成员变量 // Ivar ivar = *(ivars + i); Ivar ivar = ivars[i]; // 打印成员变量名字 XMGLog(@"%s", ivar_getName(ivar)); } // 释放 free(ivars); ``` ![](images/ivars.png)
相关文章推荐
- UIStepper
- easyui radio 无法选中的原因
- 使用easyUI遇到的一些小问题
- POJ2299 Ultra-QuickSort
- LeetCode - 111. Minimum Depth of Binary Tree
- UIPageControl
- Deep Reinforcement Learning for Dialogue Generation-关于生成对话的深度强化学习
- Android UI 设计 练习1 ——登陆界面
- LeetCode 300 Longest Increasing Subsequence
- PP66 EEPPPPMM SSyysstteemm AAddmmiinniissttrraattiioonn GGuuiiddee 16 R1
- query和exec区别
- jstl 或者el表达式如何读取request中的对象
- quick_sort <算法导论>实现
- 【一天一道LeetCode】#115. Distinct Subsequences
- 【一天一道LeetCode】#115. Distinct Subsequences
- UIProgressView
- APUE(5)---标准I/O库 (2)
- 复制UIView
- Android的UI布局
- UIPageController和UIScrollView结合使用