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

 更新时间:2016年09月23日 11:32:26   作者:顽童大了已没那么笨  
这篇文章给大家分享了iOS中修改UITextField占位符字体颜色的三个方法,分别是使用attributedPlaceholder属性、重写drawPlaceholderInRect方法和修改UITextField内部placeholderLaber的颜色,下面我们一起来看看详细的方法介绍。

前言

最近学了UITextField控件, 感觉在里面设置占位符非常好, 给用户提示信息, 于是就在想占位符的字体和颜色能不能改变呢?下面是小编的一些简单的实现,有需要的朋友们可以参考。

修改UITextField的占位符文字颜色主要有三个方法:

1、使用attributedPlaceholder属性

@property(nullable, nonatomic,copy) NSAttributedString  *attributedPlaceholder NS_AVAILABLE_IOS(6_0); // default is nil

2、重写drawPlaceholderInRect方法

- (void)drawPlaceholderInRect:(CGRect)rect;

3、修改UITextField内部placeholderLaber的颜色

[textField setValue:[UIColor grayColor] forKeyPath@"placeholderLaber.textColor"];

以下是详细的实现过程

给定场景,如在注册登录中,要修改手机号和密码TextField的placeholder的文字颜色。

效果对比


使用前


使用后

使用attributedPlaceholder

自定义GYLLoginRegisterTextField类,继承自UITextField;实现awakeFromNib()方法,如果使用storyboard,那么修改对应的UITextField的CustomClassGYLLoginRegisterTextField即可

具体代码如下:

#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

重写drawPlaceholderInRect方法

与方法一同样,自定义GYLLoginRegisterTextField,继承自UITextField,重写drawPlaceholderInRect方法,后续相同

代码如下:

#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

修改UITextField内部placeholderLaber的颜色

使用KVC机制,找到UITextField内部的修改站位文字颜色的属性:placeholderLaber.textColor

代码如下:

#import "GYLLoginRegisterTextField.h"
@implementation GYLLoginRegisterTextField

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

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

@end

第三种方法比较简单,建议可以将此封装:扩展UITextField,新建category,添加placeholderColor属性,使用KVC重写setget方法。

总结

以上就是这篇文章的全部内容了,希望能对大家开发iOS有所帮助,如果有疑问大家可以留言交流。

相关文章

  • iOS实现支持小数的星星评分组件实例代码

    iOS实现支持小数的星星评分组件实例代码

    程序中需要打分的功能,在网上找了几个,都不是很满意。所以自己动手实现了一个,下面这篇文章主要给大家介绍了关于利用iOS实现支持小数的星星评分组件的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • iOS App开发中使用设计模式中的单例模式的实例解析

    iOS App开发中使用设计模式中的单例模式的实例解析

    单例模式是最简单和基本的一种设计模式,下面我们就简单解读一下iOS中单例设计模式的用法,示例代码还是为传统的Objective-C,主要为了体现单例模式的思想,需要的朋友可以参考下
    2016-05-05
  • IOS开发实现手机震动的提示实例代码

    IOS开发实现手机震动的提示实例代码

    这篇文章主要介绍了IOS开发实现手机震动的提示实例代码的相关资料,需要的朋友可以参考下
    2017-04-04
  • iOS 水波纹动画的实现效果

    iOS 水波纹动画的实现效果

    本篇文章主要介绍了iOS 水波纹的实现的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • iOS获取Label高度的几种方法与对比

    iOS获取Label高度的几种方法与对比

    这篇文章主要介绍了给大家介绍了iOS获取Label高度的几种方法,包括 view的sizeThatFits 方法、view的sizeToFit方法、NSString的sizeWithAttributes方法和NSString 的 boundingRectWithSize 方法,文中不仅介绍四种方法的实现,还进行了对比,下面来一起看看吧。
    2016-11-11
  • iOS App开发中用CGContextRef绘制基本图形的基本示例

    iOS App开发中用CGContextRef绘制基本图形的基本示例

    这篇文章主要介绍了iOS App开发中用CGContextRef绘制基本图形的基本示例,CGContextRef同时可以进行图形颜色的填充以及文字的书写,需要的朋友可以参考下
    2016-05-05
  • Objective-C基础 自定义对象归档详解及简单实例

    Objective-C基础 自定义对象归档详解及简单实例

    这篇文章主要介绍了Objective-C基础 自定义对象归档详解及简单实例的相关资料,需要的朋友可以参考下
    2017-04-04
  • iOS实现UITableView左滑删除复制即用功能

    iOS实现UITableView左滑删除复制即用功能

    这篇文章主要介绍了iOS实现UITableView左滑删除复制即用功能,在项目开发中经常会用到这样的需求,下面小编把实现代码分享给大家,需要的朋友可以参考下
    2017-09-09
  • iOS实现日历行程的增删改查

    iOS实现日历行程的增删改查

    这篇文章主要为大家详细介绍了iOS实现日历行程的增删改查,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • IOS 避免self循环引用的方法的实例详解

    IOS 避免self循环引用的方法的实例详解

    这篇文章主要介绍了IOS 避免self循环引用的方法的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09

最新评论