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

前言

最近学了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
, uitextfield
, 占位符颜色
, uitextfield字体颜色
文字颜色
uitextfield字体颜色、uitextfield占位符、input占位符字体颜色、uitextfield边框颜色、uitextfield 光标颜色,以便于您获取更多的相关知识。

时间: 2025-01-20 19:36:54

iOS中修改UITextField占位符字体颜色的方法总结_IOS的相关文章

Linux中设置vim中显示或不显示字体颜色?

Linux中设置vim中显示或不显示字体颜色? 首先我们要确定已经安装了vim-enhanced 包,如果没有的话,请按以下步骤操作: [root@localhost software]# wget ftp://ftp.pbone.net/mirror/archive.download.redhat.com/pub/redhat/linux/5.2/en/os/i386/RedHat/RPMS/vim-enhanced-5.3-3.i386.rpm [root@localhost softwar

springmvc-Spring 导入applicationContext.xml的bean中无法使用参数占位符

问题描述 Spring 导入applicationContext.xml的bean中无法使用参数占位符 不知道有人遇到过这种情况没有,在applicationContext.xml中可以正常使用参数占位符,如: <property name="driverClass" value="${jdbc.driverClass}"/> <property name="jdbcUrl" value="${jdbc.jdbcUrl

Ext修改GridPanel数据和字体颜色、css属性等_extjs

Ext修改GridPanel数据和字体颜色等,不是单指EditGridPanel 首先获取选中的行(当然也可以获取单元格): 复制代码 代码如下: var selectedRow = grid.getSelectionModel().getSelected(); 修改设置: 复制代码 代码如下: selectedRow.set("key","value"); 修改背景色,首先获取行号,然后获取行的view对象: 复制代码 代码如下: var selectedIdx

Android TextView字体颜色设置方法小结_Android

本文实例总结了Android TextView字体颜色设置方法.分享给大家供大家参考,具体如下: 对于setTextView(int a)这里的a是传进去颜色的值.例如,红色0xff0000是指0xff0000如何直接传入R.color.red是没有办法设置颜色的,只有通过文章中的第三种方法先拿到资源的颜色值再传进去. tv.setTextColor(this.getResources().getColor(R.color.red)); 关键字: android textview color T

Android TextView字体颜色设置方法小结

本文实例总结了Android TextView字体颜色设置方法.分享给大家供大家参考,具体如下: 对于setTextView(int a)这里的a是传进去颜色的值.例如,红色0xff0000是指0xff0000如何直接传入R.color.red是没有办法设置颜色的,只有通过文章中的第三种方法先拿到资源的颜色值再传进去. tv.setTextColor(this.getResources().getColor(R.color.red)); 关键字: android textview color T

win7修改CMD命令提示符文字字体大小的方法

  很多网友喜欢运行cmd进入dos命令窗口,在dos命令窗口下进行其他操作,但有的网友反应自己眼睛不太好使,再加上显示屏较小,看代码较为费眼吃力,怎样才能把dos命令窗口中的字体变大呢,请看小编怎样处理的. win7修改CMD命令提示符文字字体大小的方法 1.点击开始菜单,在运行中输入cmd后回车,进入dos操作界面. 2.右击上方的标题栏,在弹出的菜单中选择"默认值"进入控制台窗口属性. 3.选择字体选项卡,在右方的"大小(S)"界面中选择较大的即可,当然也可以

JavaScript实现更改网页背景与字体颜色的方法_javascript技巧

本文实例讲述了JavaScript实现更改网页背景与字体颜色的方法.分享给大家供大家参考.具体分析如下: JavaScript,通过点击按钮更改网页背景与字体的颜色,网页中有N个改变颜色的按钮,点击不同的按钮,网页的字体与背景就会改变成不同的颜色.很简单的JavaScript小程序. 一.基本目标 一打开网页首先提示问候信息"你好" 网页中有N个改变颜色的按钮,其中返回是返回网页的默认颜色,背景是白的,字体是黑的 点击不同的按钮,网页的字体与背景就会改变成不同的颜色. 本来想做出彩虹起

js获取及修改网页背景色和字体色的方法_javascript技巧

本文实例讲述了js获取及修改网页背景色和字体色的方法.分享给大家供大家参考,具体如下: 获得网页的背景色和字体颜色,方法如下: 思想: 通过取得颜色属性值得到的是 rgb 色,不是我们想要的,所以需要将 rgb 色装换为 十六进制色 ,首先获得rgb色 : 代码如下: 复制代码 代码如下: var rgb = document.getElementById('color').style.backgroundColor; 得到格式如下: rgb(225, 22, 23); 然后进行拆分: 代码如下

JQuery实现动态适时改变字体颜色的方法

 这篇文章主要介绍了JQuery实现动态适时改变字体颜色的方法,实例分析了jQuery操作鼠标事件及颜色的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JQuery实现动态适时改变字体颜色的方法.分享给大家供大家参考.具体分析如下: JQuery动态适时改变字体的颜色,Ajax的效果类似,在文本框输入文字,再选择色块,输入的文字就会变成色块标示的颜色值,很不错的效果吧.如果运行有错,请刷新一次页面即可.   代码如下: <!DOCTYPE html PUBLIC "