在iOS开发中,对于很多初学者而言,很有可能碰到需要修改UITextField的占位文字的颜色,以及当UITextField成为第一响应者后光标的颜色,那么下面小编就介绍一下修改占位文字和光标的颜色。
1:当你在使用Storyboard开发是,点击UITextField,在点击右上角的属性检测器,其实在这里面你是找不到有可以修改占位文字和光标颜色的属性的。
2:那就进入UITextField的协议里面去查找,但是还是找不到,
3:在进代理里面去查找,看看有没有通过代理方法,返回颜色并控制占位文字的方法,但是,还是找不到
4:那就需要点击UITextField进入这个类里面去查找看看有没有相关的属性,这个里面有一个@property(nullable, nonatomic,copy) NSAttributedString *attributedPlaceholder 属性,这个属性是NSAttributedString类型的,而我们就是需要利用这个属性做文章才能让文字颜色变化。
NSAttributedString:带有属性的文字也叫富文本,但是这个是不可变的,一旦创建完成就器属性就不可以变了,所以类似于NSMutableArray和NSArray的区别一样,NSAttributedString也有与之对应的NSMutableAttributeString。可以在这个里面修改属性,以达到更改占位文字的目的
- (void)viewDidLoad {
[super viewDidLoad];
[self makeTextField];
self.view.backgroundColor = [UIColor whiteColor];
}
- (void)makeTextField{
//1:实例化一个文本输入框
UITextField *myTextField = [[UITextField alloc]init];
//2:设置文本输入框的属性
//2.1设置文本输入框的frame
myTextField.frame = CGRectMake(100, 50, 200, 40);
//2.2:设置文本输入框的边框样式
myTextField.borderStyle = UITextBorderStyleRoundedRect;
//2.3:设置文本输入框的占位文字
myTextField.placeholder = @"占位文字";
NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
attrs[NSForegroundColorAttributeName] = [UIColor redColor];
//NSAttributedString:带有属性的文字(叫富文本,可以让你的文字丰富多彩)但是这个是不可变的带有属性的文字,创建完成之后就不可以改变了 所以需要可变的
NSMutableAttributedString *placeHolder = [[NSMutableAttributedString alloc]initWithString:@"占位文字" attributes:attrs];
myTextField.attributedPlaceholder = placeHolder;
//3:将文本输入框添加到view中去
[self.view addSubview:myTextField];
}
运行效果:
还可以利用NSMutableAttributeString的一个方法按照范围来设置文字颜色
- (void)viewDidLoad {
[super viewDidLoad];
[self makeTextField];
self.view.backgroundColor = [UIColor whiteColor];
}
- (void)makeTextField{
//1:实例化一个文本输入框
UITextField *myTextField = [[UITextField alloc]init];
//2:设置文本输入框的属性
//2.1设置文本输入框的frame
myTextField.frame = CGRectMake(100, 50, 200, 40);
//2.2:设置文本输入框的边框样式
myTextField.borderStyle = UITextBorderStyleRoundedRect;
//2.3:设置文本输入框的占位文字
myTextField.placeholder = @"占位文字";
NSMutableAttributedString *placeHolder = [[NSMutableAttributedString alloc]initWithString:@"占位文字"];
[placeHolder setAttributes:@{NSForegroundColorAttributeName:[UIColor greenColor]} range:NSMakeRange(0, 1)];
[placeHolder setAttributes:@{NSForegroundColorAttributeName:[UIColor redColor]} range:NSMakeRange(1, 1)];
[placeHolder setAttributes:@{NSForegroundColorAttributeName:[UIColor blueColor]} range:NSMakeRange(2, 1)];
myTextField.attributedPlaceholder = placeHolder;
//3:将文本输入框添加到view中去
[self.view addSubview:myTextField];
}
@end
修改光标的颜色就是修改UITextField的tintColor
iOS开发中设置UITextField的占位文字的颜色,和光标的颜色的更多相关文章
-
IOS开发中设置控件内容对齐方式时容易混淆的几个属性
IOS开发中四个容易混淆的属性: 1. textAligment : 文字的水平方向的对齐方式 1> 取值 NSTextAlignmentLeft = 0, // 左对齐 NST ...
-
iOS开发小技巧--自定义带有占位文字的TextView(两种方式)
自定义控件注意或框架注意:自己暴露在外面的属性,一定要重写setter,保证外界与内部的交互性 一.方案一:通过drawRect:方法将文字画到textView中,监听文字改变用的是通知中心(代理也可 ...
-
IOS开发中设置导航栏主题
/** * 系统在第一次使用这个类的时候调用(1个类只会调用一次) */ + (void)initialize { // 设置导航栏主题 UINavigationBar *navBar = [UINa ...
-
怎样在ios开发中设置tableview的cell颜色
//方法一: cell .contentView .backgroundColor = [ UIColor redColor ]; //方法二: UITableViewCell *cell = [ta ...
-
iOS开发UI篇—iOS开发中三种简单的动画设置
iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...
-
ios开发中全局变量设置和调用方法
ios开发中,全局变量设置和调用方法如下:在AppDelegate.h文件中设置全局变量:@interface ***AppDelegate{NSString *myName;}@property ( ...
-
【swift,oc】ios开发中巧用自动布局设置自定义cell的高度
ios开发中,遇到自定义高度不定的cell的时候,我们通常的做法是抽取一个frame类,在frame类中预算好高度,再返回. 但是苹果出来自动布局之后...春天来了!!来看看怎么巧用自动布局设置自定义 ...
-
iOS不得姐项目--登录模块的布局,设置文本框占位文字颜色,自定义内部控件竖直排列的按钮
一.登录模块的布局 将一整部分切割成若*分来完成,如图分成了三部分来完成 设置顶部状态栏为白色的方法 二.设置文本框占位文字颜色 <1>方法一与方法二实现原理是同一种,都是通过设置pla ...
-
iOS开发中你是否遇到这些经验问题
前言 小伙伴们在开发中难免会遇到问题, 你是如何解决问题的?不妨也分享给大家!如果此文章其中的任何一条问题对大家有帮助,那么它的存在是有意义的! 反正不管怎样遇到问题就要去解决问题, 在解决问题的同时 ...
随机推荐
-
Python:如何删除文件中的空白行?
def delblankline(infile,outfile): infopen = open(infile,'r') outfopen = open(outfile,'w') lines = in ...
-
Comet4J推技术在SSHE三大框架中应用-linux下亲测可用
Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询.长连接.自动选择三种工作模式. 下载地址 co ...
-
Tools下的mdscongiguer 文件中 43行 oracle 配置 发现需要连接库 -lclntsh libclntsh.so 库是个什么东西呢?
Tools下的mdscongiguer 文件中 43行 oracle 配置 发现需要连接库 -lclntsh libclntsh.so 库是个什么东西呢? 分想一个知乎网 ...
-
The word is not correctly spelled问题解决
今天在做Ant/Xdoclet辅助生成hibernate实体映射文件时,eclipse出现了极其让我郁闷的错误,"The word is not correctly spelled" ...
-
LA 3263 (平面图的欧拉定理) That Nice Euler Circuit
题意: 平面上有n个端点的一笔画,最后一个端点与第一个端点重合,即所给图案是闭合曲线.求这些线段将平面分成多少部分. 分析: 平面图中欧拉定理:设平面的顶点数.边数和面数分别为V.E和F.则 V+F- ...
-
几款开源的图形化Redis客户端管理软件推荐
Redis是一个超精简的基于内存的键值对数据库(key-value),一般对并发有一定要求的应用都用其储存session,乃至整个数据库.不过它公自带一个最小化的命令行式的数据库管理工具,有时侯使用起 ...
-
ListView显示多种类型的item
ListView可以显示多种类型的条目布局,这里写显示两种布局的情况,其他类似 这是MainActivity:,MainActivity的布局就是一个ListView public class Mai ...
-
java_web学习(16)Ajax
Ajax Ajax(Asynchronous JavaScript and XML的缩写),允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax. Ajax:一种不用 ...
-
JS性能优化之怎么加载JS文件
IE8+等实行并行下载,各JS下载不受影响,但仍阻塞其他资源下载 如: 图片 所以首要规则就是:将JS放在body底部(推荐) 加载100kb的单个文件比4个25kb的文件快(减少外链文件数量)(脚本 ...
-
Ios 若干兼容处理
最后处理兼容真是各种苦逼,还算好,最后解决了,再此总结一下 position:fixed 和 input 的问题? ios 对position:fixed 的定位处理兼容性不是很好,例如,在同时又in ...