源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

iOS中修改UITextField占位符字体颜色的方法总结

  • 时间:2020-01-05 17:16 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:iOS中修改UITextField占位符字体颜色的方法总结
[b]前言[/b] 最近学了UITextField控件, 感觉在里面设置占位符非常好, 给用户提示信息, 于是就在想占位符的字体和颜色能不能改变呢?下面是小编的一些简单的实现,有需要的朋友们可以参考。 [b]修改UITextField的占位符文字颜色主要有三个方法:[/b] [b]1、使用attributedPlaceholder属性[/b]
@property(nullable, nonatomic,copy) NSAttributedString  *attributedPlaceholder NS_AVAILABLE_IOS(6_0); // default is nil
[b]2、重写drawPlaceholderInRect方法[/b]
- (void)drawPlaceholderInRect:(CGRect)rect;
[b]3、修改UITextField内部placeholderLaber的颜色[/b]
[textField setValue:[UIColor grayColor] forKeyPath@"placeholderLaber.textColor"];
[b]以下是详细的实现过程[/b] 给定场景,如在注册登录中,要修改手机号和密码TextField的[code]placeholder[/code]的文字颜色。 [b]效果对比[/b] [img]http://files.jb51.net/file_images/article/201609/2016923112846453.jpg?2016823112859[/img] 使用前 [img]http://files.jb51.net/file_images/article/201609/2016923112926539.jpg?2016823112935[/img] 使用后 [b]使用attributedPlaceholder[/b] 自定义[code]GYLLoginRegisterTextField[/code]类,继承自UITextField;实现[code]awakeFromNib()[/code]方法,如果使用[code]storyboard[/code],那么修改对应的UITextField的[code]CustomClass[/code]为[code]GYLLoginRegisterTextField[/code]即可 具体代码如下:
#import "GYLLoginRegisterTextField.h"
@implementation GYLLoginRegisterTextField

- (void)awakeFromNib
{
 self.tintColor = [UIColor whiteColor];  //设置光标颜色

 //修改占位符文字颜色
 NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
 attrs[NSForegroundColorAttributeName] = [UIColor whiteColor];
 self.attributedPlaceholder = [[NSAttributedString alloc] initWithString:self.placeholder attributes:attrs];
}

@end
[b]重写drawPlaceholderInRect方法[/b] 与方法一同样,自定义[code]GYLLoginRegisterTextField[/code],继承自UITextField,重写[code]drawPlaceholderInRect[/code]方法,后续相同 代码如下:
#import "GYLLoginRegisterTextField.h"

@implementation GYLLoginRegisterTextField

- (void)awakeFromNib
{
 self.tintColor = [UIColor whiteColor];  //设置光标颜色
}

- (void)drawPlaceholderInRect:(CGRect)rect
{
 NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
 attrs[NSForegroundColorAttributeName] = [UIColor whiteColor];
 attrs[NSFontAttributeName] = self.font;

 //画出占位符
 CGRect placeholderRect;
 placeholderRect.size.width = rect.size.width;
 placeholderRect.size.height = rect.size.height;
 placeholderRect.origin.x = 0;
 placeholderRect.origin.y = (rect.size.height - self.font.lineHeight) * 0.5;
 [self.placeholder drawInRect:placeholderRect withAttributes:attrs];

 //或者
 /*
 CGPoint placeholderPoint = CGPointMake(0, (rect.size.height - self.font.lineHeight) * 0.5);
 [self.placeholder drawAtPoint:placeholderPoint withAttributes:attrs];
 */
}

@end
[b]修改UITextField内部placeholderLaber的颜色 [/b] 使用KVC机制,找到UITextField内部的修改站位文字颜色的属性:[code]placeholderLaber.textColor[/code] 代码如下:
#import "GYLLoginRegisterTextField.h"
@implementation GYLLoginRegisterTextField

- (void)awakeFromNib
{
 self.tintColor = [UIColor whiteColor];  //设置光标颜色

 //修改占位符文字颜色
 [self setValue:[UIColor grayColor] forKeyPath@"placeholderLaber.textColor"];
}

@end
第三种方法比较简单,建议可以将此封装:扩展UITextField,新建category,添加[code]placeholderColor[/code]属性,使用KVC重写[code]set[/code]和[code]get[/code]方法。 [b]总结[/b] 以上就是这篇文章的全部内容了,希望能对大家开发iOS有所帮助,如果有疑问大家可以留言交流。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部