关闭

UITextField详细应用

标签: uitextfield
127人阅读 评论(0) 收藏 举报
分类:

UILabel详细应用

一.设置占位文字的颜色
方法一:利用富文本

/* 手机号输入框 /
@property (weak, nonatomic) IBOutlet UITextField *phoneTextField;

  • (void)viewDidLoad {
    [super viewDidLoad];
    // 创建一个富文本对象
    NSMutableDictionary *attributes = [NSMutableDictionary dictionary];
    // 设置富文本对象的颜色
    attributes[NSForegroundColorAttributeName] = [UIColor whiteColor];
    // 设置UITextField的占位文字
    self.phoneTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@”手机号” attributes:attributes];

}
方法二:利用Runtime获取私有的属性名称,利用KVC设置属性

// 设置占位文字的颜色为红色(注意下面的’self’代表你要修改占位文字的UITextField控件)
[self setValue:[UIColor redColor] forKeyPath:@”_placeholderLabel.textColor”];
注意:_placeholderLabel.textColor是不可乱写的哦,我们是怎么获取到这个属性的呢?请看下文:
// 只调用一次(自定义UITextField)
+ (void)initialize {

[self getIvars];

}

// 获取私有变量名称
+ (void)getIvars {

unsigned int count = 0;

Ivar *ivars = class_copyIvarList([UITextField class], &count);

for (int i = 0; i < count; i++) {
    Ivar ivar = ivars[i];

    NSLog(@"%s----%s", ivar_getName(ivar), ivar_getTypeEncoding(ivar));
}

}
查看打印,找出可能的属性名称,试试便知;

完整代码:自定义的UITextField,获取到焦点(编辑状态)的时候是白色,失去焦点(非编辑状态)的时候是灰色:

import “YCTextField.h”

import

define YCplaceholderTextColor @”_placeholderLabel.textColor”

@implementation YCTextField

  • (void)initialize {

    [self getIvars];

}

// 获取私有变量名称
+ (void)getIvars {

unsigned int count = 0;

Ivar *ivars = class_copyIvarList([UITextField class], &count);

for (int i = 0; i < count; i++) {
    Ivar ivar = ivars[i];

    NSLog(@"%s----%s", ivar_getName(ivar), ivar_getTypeEncoding(ivar));
}

}

  • (void)awakeFromNib {

    // 设置光标的颜色
    self.tintColor = self.textColor;
    }

// 获取到焦点
- (BOOL)becomeFirstResponder {

// 利用运行时获取key,设置占位文字的颜色
[self setValue:self.textColor forKeyPath:YCplaceholderTextColor];

return [super becomeFirstResponder];

}

// 失去焦点
- (BOOL)resignFirstResponder {

// 利用运行时获取key,设置占位文字的颜色
[self setValue:[UIColor grayColor] forKeyPath:YCplaceholderTextColor];

return [super resignFirstResponder];

}

@end
方法三.将占位文字画上去(重写- (void)drawPlaceholderInRect:(CGRect)rect;)

  • (void)drawPlaceholderInRect:(CGRect)rect
    {

    [[UIColor orangeColor] set];

    [self.placeholder drawInRect:rect withFont:[UIFont systemFontOfSize:20]];
    }
    二.设置光标颜色
    // 设置光标的颜色
    self.tintColor = [UIColor redColor];
    三.设置占位文字的偏移
    重写-(CGRect)placeholderRectForBounds:(CGRect)bounds;方法
    可以用来设置光标与占位的间距

//控制placeHolder的位置,左右缩20
-(CGRect)placeholderRectForBounds:(CGRect)bounds
{

//return CGRectInset(bounds, 20, 0);
CGRect inset = CGRectMake(bounds.origin.x+50, bounds.origin.y, bounds.size.width -10, bounds.size.height);//更好理解些
return inset;
}
扩充:系统还提供了很多类似的方法
– textRectForBounds:  //重写来重置文字区域
– drawTextInRect:    //改变绘文字属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.
– placeholderRectForBounds:  //重写来重置占位符区域
– drawPlaceholderInRect:  //重写改变绘制占位符属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了
– borderRectForBounds:  //重写来重置边缘区域
– editingRectForBounds:  //重写来重置编辑区域
– clearButtonRectForBounds:  //重写来重置clearButton位置,改变size可能导致button的图片失真
– leftViewRectForBounds:
– rightViewRectForBounds:

文/YotrolZ(简书作者)
原文链接:http://www.jianshu.com/p/49b4eb97f41e
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

0
0
查看评论

UITextField 详细解释

self.textFuserName.placeholder = @"请输入用户名"; //输入框中是否有个叉号 self.textFuserName.clearButtonMode = UITextFieldViewModeAlways; //再次编辑就...
  • powerdesigner1222
  • powerdesigner1222
  • 2014-04-16 15:20
  • 250

UITextField的详细使

UItextField通常用于外部数据输入,以实现人机交互。下面以一个简单的登陆界面来讲解UItextField的详细使用。   //用来显示“用户名”的label UILabel* label1 = [[UILabelalloc] initWithFrame:C...
  • binsoft
  • binsoft
  • 2014-03-13 17:13
  • 483

iOS uitextfield详细使用说明

//初始化textfield并设置位置及大小   UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];   //设置边框样式,只有设置了才会显示边框...
  • conroewuhao
  • conroewuhao
  • 2014-11-11 16:16
  • 260

iOS - UITextField 详细使用方法

//初始化textfield并设置位置及大小   UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];   //设置边框样式,只有设置了才会显示边框样式...
  • dylan_lwb_
  • dylan_lwb_
  • 2015-03-27 15:48
  • 638

UITextField 的详细使用

UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];  //初始化textfield并设置位置及大小 text.borderStyle = UITextBorde...
  • swift_vip
  • swift_vip
  • 2016-06-13 11:37
  • 494

UITextField的详细使用

UItextField通常用于外部数据输入,以实现人机交互。下面以一个简单的登陆界面来讲解UItextField的详细使用。 //用来显示“用户名”的label UILabel* label1 = [[UILabelalloc] initWithFrame:CGRect...
  • hong1595
  • hong1595
  • 2013-11-01 10:02
  • 832

设置UITextField的内间距

//设置距离左边的距离           //设置左视图显示,默认不显示 UITextField.leftViewMode = UITextFieldViewModeAlways ; UITextField.left...
  • book_1992
  • book_1992
  • 2015-05-22 17:44
  • 1475

如何设置UITextfield 边框色

加上:#import _telField.layer.borderColor= [UIColorredColor].CGColor; _telField.layer.borderWidth= 1.0f;
  • zhao15127334470
  • zhao15127334470
  • 2016-12-05 10:43
  • 683

修改UITextField的边框颜色

UITextField的边框颜色
  • qq_18674153
  • qq_18674153
  • 2014-12-03 15:17
  • 1097

UITextField的leftView和rightView属性

tf = [[UITextField alloc]init]; tf.backgroundColor = [UIColor cyanColor]; tf.frame = CGRectMake(50, 50, 100, 20); UIImageView *imagev = [[...
  • jianandjan
  • jianandjan
  • 2015-10-11 23:51
  • 3354
    个人资料
    • 访问:2016次
    • 积分:39
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档