• [转]改变UITextField placeHolder颜色、字体


    本文转载至 http://m.blog.csdn.net/blog/a394318511/8025170

    我们有时需要定制化UITextField对象的风格,可以添加许多不同的重写方法,来改变文本字段的显示行为。这些方法都会返回一个CGRect结构,制定了文本字段每个部件的边界范围,甚至修改placeHolder颜色,字体。

    – textRectForBounds:      //重写来重置文字区域

    – drawTextInRect:         //改变绘文字属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.

    – placeholderRectForBounds:  //重写来重置占位符区域

    – drawPlaceholderInRect:  //重写改变绘制占位符属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了

    – borderRectForBounds:  //重写来重置边缘区域

    – editingRectForBounds:  //重写来重置编辑区域

    – clearButtonRectForBounds:  //重写来重置clearButton位置,改变size可能导致button的图片失真

    – leftViewRectForBounds:

    – rightViewRectForBounds:

    通过– drawPlaceholderInRect:方法可改变placeHolder颜色、字体,请看代码:

    首先定义一个类CustomTextField让它继承UITextField实现以下方法即可:

    //控制清除按钮的位置

    -(CGRect)clearButtonRectForBounds:(CGRect)bounds

    {

       return CGRectMake(bounds.origin.x + bounds.size.width - 50, bounds.origin.y + bounds.size.height -20, 16, 16);

    }

    //控制placeHolder的位置,左右缩20

    -(CGRect)placeholderRectForBounds:(CGRect)bounds

    {

        

        //return CGRectInset(bounds, 20, 0);

       CGRect inset = CGRectMake(bounds.origin.x+100, bounds.origin.y, bounds.size.width -10, bounds.size.height);//更好理解些

       return inset;

    }

    //控制显示文本的位置

    -(CGRect)textRectForBounds:(CGRect)bounds

    {

        //return CGRectInset(bounds, 50, 0);

        CGRect inset = CGRectMake(bounds.origin.x+190, bounds.origin.y, bounds.size.width -10, bounds.size.height);//更好理解些

        

        return inset;

    }

    //控制编辑文本的位置

    -(CGRect)editingRectForBounds:(CGRect)bounds

    {

        //return CGRectInset( bounds, 10 , 0 );

        

       CGRect inset = CGRectMake(bounds.origin.x +10, bounds.origin.y, bounds.size.width -10, bounds.size.height);

       return inset;

    }

    //控制左视图位置

    - (CGRect)leftViewRectForBounds:(CGRect)bounds

    {

       CGRect inset = CGRectMake(bounds.origin.x +10, bounds.origin.y, bounds.size.width-250, bounds.size.height);

       return inset;

        //return CGRectInset(bounds,50,0);

    }

    //控制placeHolder的颜色、字体

    - (void)drawPlaceholderInRect:(CGRect)rect

    {

        //CGContextRef context = UIGraphicsGetCurrentContext();

        //CGContextSetFillColorWithColor(context, [UIColor yellowColor].CGColor);

        [[UIColororangeColor] setFill];

        

        [[selfplaceholder] drawInRect:rectwithFont:[UIFontsystemFontOfSize:20]];

    }

    //下面是使用CustomTextField的代码,可放在viewDidLoad等方法中

        _textField = [[CustomTextField alloc] initWithFrame:CGRectMake(20, 150, 280, 30)];

        _textField.placeholder = @"请输入帐号信息";

        _textField.borderStyle = UITextBorderStyleRoundedRect;

        _textField.textAlignment = UITextAlignmentLeft;

        _textField.delegate = self;

        _textField.clearButtonMode = UITextFieldViewModeWhileEditing;

        _textField.text = @"aa";

        UIImageView *imgv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon-iwant-2.png"]];

        _textField.leftView = imgv;

        _textField.leftViewMode = UITextFieldViewModeAlways;

        [self.view addSubview:_textField];

    转自:http://blog.csdn.net/leeyehong_self/article/details/7939147

  • 相关阅读:
    HDU 2899 Strange fuction
    HDU 2899 Strange fuction
    HDU 2199 Can you solve this equation?
    HDU 2199 Can you solve this equation?
    Java实现 LeetCode 700 二叉搜索树中的搜索(遍历树)
    Java实现 LeetCode 700 二叉搜索树中的搜索(遍历树)
    Java实现 LeetCode 700 二叉搜索树中的搜索(遍历树)
    Java实现 LeetCode 699 掉落的方块(线段树?)
    Java实现 LeetCode 699 掉落的方块(线段树?)
    Java实现 LeetCode 699 掉落的方块(线段树?)
  • 原文地址:https://www.cnblogs.com/Camier-myNiuer/p/4450331.html
Copyright © 2020-2023  润新知