在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