iOS开发中设置UITextField的占位文字的颜色,和光标的颜色
在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开发中你是否遇到这些经验问题
前言 小伙伴们在开发中难免会遇到问题, 你是如何解决问题的?不妨也分享给大家!如果此文章其中的任何一条问题对大家有帮助,那么它的存在是有意义的! 反正不管怎样遇到问题就要去解决问题, 在解决问题的同时 ...
随机推荐
- redis原子性读写操作之LUA脚本和watch机制
最近在开发电商平台的子系统--储值卡系统,系统核心业务涉及到金额消费以及库存控制,因此为了解决建立在内存上高并发情况下的事务控制,使用了spring封装的RedisTemplate执行lua脚本进行原 ...
- ubuntu开启SSH服务
SSH分客户端openssh-client和openssh-server 如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-g ...
- SDK Manager.exe闪退
运行tools文件下android.bat. 修改tools文件下android.bat文件,再运行SDK Manager.exe
- HTML5 history新特性pushState、replaceState
DOM中的window对象通过window.history方法提供了对浏览器历史记录的读取,让你可以在用户的访问记录中前进和后退. 从HTML5开始,我们可以开始操作这个历史记录堆栈. 1.Histo ...
- selenium python 安装
环境为Win64位系统,默认已经安装python2.7到D:\Python27,此次使用的浏览器为chrome 下面是selenium的安装和chromedriver.exe的下载 1.安装selen ...
- android逆向代码分析截图
- 分析器错误消息: 未能加载类型“Automation.Web.MvcApplication”。
常见原因1 : 可能是自己手动修改了项目 ==>属性==>生成的输出路径 ,导致版本不兼容 常见员因2 : Global的 命名空间 与 项目的命名空间 不一致 常见原因3 : 查看 ...
- iOS程序上传流程 2014年9月最新版
程序上传步骤: 1.登录账户,点击Manage Your Apps 2.点击Add New App 3.注册Bundle ID,点击蓝色的here 4.进入了注册页面,首先要填写App ID的一个描述 ...
- JsonProperties对模型返回的应用
在采用springMvc+Mybatis的架构中.数据库已经建好,数据库和需要返回的实体共用一个model.一切都井然有序,看起来很美好. 返回的代码都如下这样 @RequestMapping(&qu ...
- Centos7下配置node.js环境
1.软件环境: Centos7.VMware 10.0.NodeJS v0.10.24 2.安装过程 1>安装过程中需要管理员权限,及root权限,可以敲入如下命令. [sharing@loca ...