iOS 自定义textField 显示下划线 左边显示文字 自定义placeholder的颜色和字体

原创 2016年06月01日 11:29:40

本篇文章是记录下自己学习的内容 , 代码比较low,请各位大神多多指教


效果为


主要实现方法:

实现下划线。重写drawRect方法:

- (void)drawRect:(CGRect)rect

{

    CGContextRef context = UIGraphicsGetCurrentContext();


    [[UIColor redColor] set];//设置下划线颜色 这里是红色 可以自定义

    

    CGFloat y = CGRectGetHeight(self.frame);

    CGContextMoveToPoint(context, 0, y);

    CGContextAddLineToPoint(context, CGRectGetWidth(self.frame), y);

    //设置线的宽度

    CGContextSetLineWidth(context, 2);

    //渲染 显示到self

    CGContextStrokePath(context);

}


接下来自定义textField的leftView, 这里因为要显示文字,所以用一个label来实现, 也可以使用自定义的view

。在初始化的时候设置label为leftView, 并设置leftView的mode

- (instancetype)initWithFrame:(CGRect)frame

{

    if (self = [super initWithFrame:frame]) {

        UILabel *label = [[UILabel alloc] init];

        self.leftView = label;

        self.leftViewMode = UITextFieldViewModeAlways;

        _leftLabel = label;

    }

    return self;

}

_leftLabel是自己定义的一个全局变量, 这里可以看到leftLabel并没有frame

接下来重写textField的

- (CGRect)leftViewRectForBounds:(CGRect)bounds方法, 给leftView设置frame

- (CGRect)leftViewRectForBounds:(CGRect)bounds

{

    

    [super leftViewRectForBounds:bounds];

    CGRect frame = bounds;

    //这里设置为leftView的宽是textField的0.3倍,

    frame.size.width = bounds.size.width * 0.3;

    

    return frame;

}

然后在.h文件里面生成属性, 方便外界修改;

//左侧显示的文字

@property (nonatomic , copy) NSString *leftTitle;

//左侧文字的颜色

@property (nonatomic , strong) UIColor *leftTitleColor;

/**只有在设置了placeholder之后才会有效**/

@property (nonatomic , strong) UIColor *placeholderColor;


@property (nonatomic , strong) UIFont *placeholderFont;Font;

接下来重写属性的set方法


- (void)setPlaceholderColor:(UIColor *)placeholderColor

{

    NSMutableDictionary *dict = [NSMutableDictionary dictionary];

    dict[NSForegroundColorAttributeName] = placeholderColor;

    NSAttributedString *attribute = [[NSAttributedString alloc] initWithString:self.placeholder attributes:dict];

    [self setAttributedPlaceholder:attribute];

}

- (void)setPlaceholderFont:(UIFont *)placeholderFont

{

    NSMutableDictionary *dict = [NSMutableDictionary dictionary];

    dict[NSFontAttributeName] = placeholderFont;

    NSAttributedString *attribute = [[NSAttributedString alloc] initWithString:self.placeholder attributes:dict];

    [self setAttributedPlaceholder:attribute];

}

- (void)setLeftTitleColor:(UIColor *)leftTitleColor

{

    _leftTitleColor = leftTitleColor;

    [_leftLabel setTextColor:leftTitleColor];

}

- (void)setLeftTitle:(NSString *)leftTitle

{

    _leftTitle = leftTitle;

    [_leftLabel setText:leftTitle];

}

说明:之所以要在设置placeholder之后再设置placeholderColor和placeholderFont是因为我是用的是    [self setAttributedPlaceholder:attribute];来设置的, 这里是通过初始化self。placeholder来实现, 如果先设置placeholderColor,因为此时placeholder为空, 会设置失败, placeholderFont同上,


到这里就全部设置完毕了。。


版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS---textfield设置为只有下划线,并且左边有图片

self.phoneField.font = [UIFont systemFontOfSize:15];     self.phoneField.placeholder = @"请输入";   ...
  • iotjin
  • iotjin
  • 2015年12月29日 14:49
  • 5082

iOS 只有下划线的输入框

很多APP登录界面的的账号密码输入处不是一个框,而是一条下划线。下面就来教教大家怎么做! 分析: 1.首先可以确定的是,输入账号密码 处肯定是一个输入框(TextField/TextView)...

UITextField 左图以及文字位置的设置

最右侧加图片是以下代码:      UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ri...

UITextField的placeholder文字的位置,颜色等的自定义设置

UITextField的placeholder文字的位置,颜色的自定义设置

iOS---自定义带占位文字placeholder的TextView

本篇文章主要介绍了"ios 自定义带占位文字placeholder的TextView",主要涉及到方面的内容,对于IOS开发感兴趣的同学可以参考一下: 小伙伴们在写输入框的时候很可能需要带占位文字的T...
  • iotjin
  • iotjin
  • 2015年10月20日 21:16
  • 258

ios 自定义带占位文字(placeholder)的TextView

小伙伴们在写输入框的时候很可能需要带占位文字的TextView,由于TextField控件有占位文字的属性,但它不能多行显示,而TextView可以多行显示,但是它又没有占位文字属性,所以我们只能自定...

Android 自定义textview 部分文字字体颜色高亮

Android研发过程 经常会碰到这样的情况就是 一个textview 中 需要在特定的位置显示不同的颜色比如红色或者蓝色的高亮 最贱的办法就是一个linearlayout中放置多个textview ...

TextView的一些高级应用(自定义字体、显示多种颜色、添加阴影)

1.    自定义字体 可以使用setTypeface(Typeface)方法来设置文本框内文本的字体,而android的Typeface又使用TTF字体文件来设置字体 所以,我们可以在程序中放入...

TextView的一些应用(Textview 自定义字体、显示多种颜色、添加阴影)

1.    自定义字体 可以使用setTypeface(Typeface)方法来设置文本框内文本的字体,而android的Typeface又使用TTF字体文件来设置字体 所以,我们可以在程序中放入TT...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 自定义textField 显示下划线 左边显示文字 自定义placeholder的颜色和字体
举报原因:
原因补充:

(最多只允许输入30个字)