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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM