iOS开发之自定义UITextField的方法_IOS

UITextField是IOS开发中用户交互中重要的一个控件,常被用来做账号密码框,输入信息框等。

观察效果图

UITextField有以下几种特点:

1.默认占位文字是灰色的

2.当光标点上去时,占位文字变为白色

3.光标是白色的

接下来我们通过不同的方法来解决问题

一.将xib中的UITextField与代码关联

通过NSAttributeString方法来更改占位文字的属性
(void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
//文字属性
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[NSForegroundColorAttributeName] = [UIColor grayColor];
//带有属性的文字(富文本属性)NSAttributeString
NSAttributedString *attr = [[NSAttributedString alloc] initWithString:@"手机号" attributes:dict];
self.phoneField.attributedPlaceholder = attr;
} 

但是这种方法只能做出第一种效果,而且不具有通用性。

二.自定义一个UITextField的类

重写它的drawPlaceholderInRect方法

//画出占位文字- (void)drawPlaceholderInRect:(CGRect)rect {
[self.placeholder drawInRect:CGRectMake(0, 13, self.size.width, 25) withAttributes:@{
NSForegroundColorAttributeName : [UIColor grayColor],
NSFontAttributeName : [UIFont systemFontOfSize:14]
}];
}

这个方法和上一个方法类似,只能做出第一种效果,但这个具有通用性

三.利用Runtime运行时机制

Runtime是官方的一套C语言库

能做出很多底层的操作(比如访问隐藏的一些成员变量\成员方法)

(void)initialize {
unsigned int count = 0;
Ivar *ivars = class_copyIvarList([UITextField class] , &count);
for (int i = 0; i < count; i++) {
//取出成员变量
Ivar ivar = *(ivars + i);
//打印成员变量名字
DDZLog(@"%s",ivar_getName(ivar));
}
}

利用class_copyIvarList这个C函数,将所有的成员变量打印出来

这样我们就可以直接通过KVC进行属性设置了

- (void)awakeFromNib {
//修改占位文字颜色
[self setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"]; //设置光标颜色和文字颜色一致
self.tintColor = self.textColor;
}

通过这个方法可以完成所有的效果,既具有通用性也简单

最后一个效果是

在获得焦点时改变占位文字颜色

在失去焦点时再改回去

//获得焦点时
- (BOOL)becomeFirstResponder {
//改变占位文字颜色
[self setValue:self.textColor forKeyPath:@"_placeholderLabel.textColor"]; return [super becomeFirstResponder];
}
//失去焦点时
- (BOOL)resignFirstResponder {
//改变占位文字颜色
[self setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"]; return [super resignFirstResponder];
} 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ios自定义uitextfield
, 自定义uitextfield
uitextfield方法
ios自定义uitextfield、ios开发uitextfield、自定义uitextfield、ios 自定义键盘开发、ios开发自定义相机,以便于您获取更多的相关知识。

时间: 2025-01-07 17:28:24

iOS开发之自定义UITextField的方法_IOS的相关文章

iOS开发 全机型适配解决方法_IOS

最近做项目,对于IPhone 手机机型适配很是头疼,所以整理下网上资料,记录下来,也许能帮助到正看文章的你, 今天打算跟大家聊聊最近研究的全机型适配思路. 当前我们需要适配的iPhone机型有4s.5s.6s.6Plus四种机型.它们的尺寸分别是  iphone4s {320, 480}                           960*640  iphone5 5s {320, 568}                       1136*640  iphone6 6s   {37

全面解析iOS应用中自定义UITableViewCell的方法_IOS

有时候我们需要自己定义UITableViewCell的风格,其实就是向行中添加子视图.添加子视图的方法主要有两种:使用代码以及从.xib文件加载.当然后一种方法比较直观. 一.基本用法我们这次要自定义一个Cell,使得它像QQ好友列表的一行一样:左边是一张图片,图片的右边是三行标签: 当然,我们不会搞得这么复杂,只是有点意思就行. 1.运行Xcode 4.2,新建一个Single View Application,名称为Custom Cell: 2.将图片资源导入到工程.为此,我找了14张50×

IOS 开发之自定义按钮实现文字图片位置随意定制_IOS

IOS 开发之自定义按钮实现文字图片位置随意定制 可能有些看到这篇文章的朋友会觉得很不屑:"按钮谁不会自定义?还需要看你的?" 也确实,按钮是我们项目中最常见的控件之一,天天在使用.对于不同类型的按钮,我们是否有更加简便的方法来实现需求是我们需要做的.这里我提出自己的两种方法,您可以对你自己平时自定义按钮的方法做一下对比,看看哪种方法更加简单. 多说一句,千万不要觉得知识简单,觉得自己会了,没必要学习.'往往简单的东西存在大智慧'(这个比给满分),知识都是慢慢积累出来的. 按钮是应用中

iOS开发之自定义表情键盘(组件封装与自动布局)

下面的东西是编写自定义的表情键盘,话不多说,开门见山吧!下面主要用到的知识有MVC, iOS开发中的自动布局,自定义组件的封装与使用,Block回调,CoreData的使用.有的小伙伴可能会问写一个自定义表情键盘肿么这么麻烦?下面将会介绍我们如何用上面提到的东西来定义我们的表情键盘.下面的内容会比较多,这篇博文还是比较有料的. 还是那句话写技术博客是少不了代码的,下面会结合代码来回顾一下iOS的知识,本篇博文中用到的知识点在前面的博客中都能找到相应的内容,本篇算是一个小小的功能整合.先来张图看一

ios开发中时间转换的方法集锦

  这篇文章主要介绍了ios开发中时间转换的方法集锦,需要的朋友可以参考下 在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理. 例如: //实例化一个NSDateFormatter对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; //设定时间格式,这里可以设置成自己需要的格式 [dateFormatter setDateFormat:@"yy

GMap.Net开发之自定义Marker使用方法

 这篇文章主要介绍了GMap中Marker的使用方法,有需要的朋友可以参考一下 自定义Marker,可以理解为在地图上自定义图标(Custom Marker),先看看GMap的地图和图标的显示方式:   开发之自定义Marker使用方法-">   Map控件上可以添加Overlay(图层),可以添加多个图层,先添加的图层在下面显示.   图层上可以添加GMapMarker,当然也可以添加GMapPolygon和GMapRoute,后续介绍.   在地图的使用中常要求的功能就是添加自定义图标

ios开发-IOS开发使用自定义字体路径问题求大神

问题描述 IOS开发使用自定义字体路径问题求大神 在项目开发中,我需要实现服务器管理UI风格,返回给我一个TTF格式的自定义字体包,我在加载里面的字体,问题就是服务器返给我的TTF字体包,我保存在沙盒里面读取不到.网上也找了很多资料,都没有答案,请问大神该怎么样解决.或者说我怎么把下载的字体加载到我的工程中 解决方案 http://blog.sina.com.cn/s/blog_9bf8abf301018pbr.html 解决方案二: iOS开发 - 使用自定义字体ios 使用自定义字体IOS使

理解iOS多线程应用的开发以及线程的创建方法_IOS

一.进程和线程1.什么是进程   进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcode,系统就会分别启动2个进程 通过"活动监视器"可以查看Mac系统中所开启的进程   2.什么是线程 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行 比如使用酷狗播放音乐.使用迅雷下载电影,都需要在线程中执行 3.线程的串行   1个线程

iOS开发定时器的三种方法分享_IOS

前言 在开发中,很多时候我们需要用到定时器实时刷新某个数值.这个时候我们就需要用到定时器,这里,我为大家推荐三种方法,分别是:NSTimer.CADisplayLink.GCD.接下来我就一一介绍它们的用法.希望能帮到大家. 一.NSTimer(一般用于定时的更新一些非界面上的数据) 1. 创建方法 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(action: