在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的占位文字的颜色,和光标的颜色的更多相关文章

  1. IOS开发中设置控件内容对齐方式时容易混淆的几个属性

    IOS开发中四个容易混淆的属性: 1. textAligment : 文字的水平方向的对齐方式 1> 取值 NSTextAlignmentLeft      = 0,    // 左对齐 NST ...

  2. iOS开发小技巧--自定义带有占位文字的TextView(两种方式)

    自定义控件注意或框架注意:自己暴露在外面的属性,一定要重写setter,保证外界与内部的交互性 一.方案一:通过drawRect:方法将文字画到textView中,监听文字改变用的是通知中心(代理也可 ...

  3. IOS开发中设置导航栏主题

    /** * 系统在第一次使用这个类的时候调用(1个类只会调用一次) */ + (void)initialize { // 设置导航栏主题 UINavigationBar *navBar = [UINa ...

  4. 怎样在ios开发中设置tableview的cell颜色

    //方法一: cell .contentView .backgroundColor = [ UIColor redColor ]; //方法二: UITableViewCell *cell = [ta ...

  5. iOS开发UI篇—iOS开发中三种简单的动画设置

    iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...

  6. ios开发中全局变量设置和调用方法

    ios开发中,全局变量设置和调用方法如下:在AppDelegate.h文件中设置全局变量:@interface ***AppDelegate{NSString *myName;}@property ( ...

  7. 【swift,oc】ios开发中巧用自动布局设置自定义cell的高度

    ios开发中,遇到自定义高度不定的cell的时候,我们通常的做法是抽取一个frame类,在frame类中预算好高度,再返回. 但是苹果出来自动布局之后...春天来了!!来看看怎么巧用自动布局设置自定义 ...

  8. iOS不得姐项目--登录模块的布局,设置文本框占位文字颜色,自定义内部控件竖直排列的按钮

    一.登录模块的布局 将一整部分切割成若干部分来完成,如图分成了三部分来完成 设置顶部状态栏为白色的方法 二.设置文本框占位文字颜色 <1>方法一与方法二实现原理是同一种,都是通过设置pla ...

  9. iOS开发中你是否遇到这些经验问题

    前言 小伙伴们在开发中难免会遇到问题, 你是如何解决问题的?不妨也分享给大家!如果此文章其中的任何一条问题对大家有帮助,那么它的存在是有意义的! 反正不管怎样遇到问题就要去解决问题, 在解决问题的同时 ...

随机推荐

  1. 分享一个oraclehelper

    分享一个拿即用的oraclehelper 首先要引用本机中的oralce access,如果是64位的话,也必须是64位运行,不然会报连接为空connection 等于null. using Orac ...

  2. Ubuntu apt-get "Hash Sum mismatch" 问题解决方法

    参考:ubuntu: apt-get update的时候遇到"Hash Sum mismatch"错误 在安装Mininet的时候,apt-get update的时候遇到了这个问题 ...

  3. static{ }语句块详解

    static{}(即static块),会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法.举ge例子: public class Test { public static i ...

  4. HJ-第二周,真机调试

      报错: Showing Recent Issues   Huiju_app requires a provisioning profile. Select a provisioning profi ...

  5. JDBC详解(转)

    原文链接:http://blog.csdn.net/cai_xingyun/article/details/41482835 什么是JDBC? Java语言访问数据库的一种规范,是一套API JDBC ...

  6. 汇编语言标记寄存器标记位_NV UP EI NG NZ AC PE CY

    在8086CPU中,有一种标记寄存器,长度为16bit: 其中存储的信息被称为程序状态字(Program Status Word,PSW),以下将该寄存器简称为flag. 功能:1)用来存储相关指令的 ...

  7. [skill] C++ delete VS delete []

    delete 用来删除 new 返回的对象. 先调用对象的析构,然后释放指针指向的内存. delete[] 用来删除 new [] 返回的对象. 先调用数组中每一个对象的析构,然后释放指针指向的内存.

  8. addChildViewController后开启热点/wifi/打电话引起的子vc的布局问题

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Menlo; color: #00b1ff } p.p2 { margin: 0.0px 0. ...

  9. JMeter学习-036-JMeter调试工具之三---Debug Sampler

    前面两篇文章分别讲述了 HTTP Mirror Server 和 Debug PostProcessor 的脚本调试实例.此文主要讲述第三种调试工具:DebugSampler,其主要是查看JMeter ...

  10. ACM集训的第一题

    对于一群NP(2<=NP<=10)个要互送礼物的朋友,郭铮鹏要确定每个人送出的钱比收到的多多少. 在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人 ...