美文网首页
UITextField PlaceHolder垂直居中显示

UITextField PlaceHolder垂直居中显示

作者: iOS开发小学生 | 来源:发表于2019-03-14 22:30 被阅读0次

    一、需求
    近期需要实现类似微信提现界面的功能,在输入提现金额用到UITextField控件来实现,需求是:
    1,在没有输入金额时,默认展示字体较小的占位字符,有输入金额时,显示正常大小的金额,且占位字符要垂直居中显示。
    2,用户把所有字符删除完时,要回到展示字体较小的占位字符,且占位字符要垂直居中显示。
    3,用户点右侧的清除按钮清空所有内容时,要回到展示字体较小的占位字符,且占位字符要垂直居中显示。
    二、实现
    1,要自定义占位字符串,就得用到UITextField的attributedPlaceholder属性:

    @property(nullable, nonatomic, copy)   NSAttributedString  *attributedPlaceholder NS_AVAILABLE_IOS(6_0); // default is nil
    

    这里可以自定义文字字符的字体样式、文字颜色、文字段落样式等,可以参考NSAttributedString.h文件中的文字字符属性参数定义。这里主要说一下垂直居中,要实现垂直居中就得使用到段落样式属性 NSParagraphStyleAttributeName。

    NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
    

    // 通过最小的行高来控制文字字符垂直居中,注意,文字字符垂直方向默认是底部对齐,所以你不能让它直接等于youTextFeild的行高,通过这种简单计算可以控制文字字符垂直居中显示。

    style.minimumLineHeight = self.youTextFeild.font.lineHeight - (self.youTextFeild.font.lineHeight - [UIFont systemFontOfSize:16].lineHeight) * 0.5; 
    
    NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:@"请输入提现金额" attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:16], NSParagraphStyleAttributeName : style}];
    
    

    下面分享一点小知识:

    当我们设置UITextField的属性secureTextEntry = YES的时候,有一个特殊的附加功能,就是当我们在输入这种设置类型的TextField的时候,切换到别的输入框后,在回来当前的这个输入框进行输入的时候,就会把当前输入框的值清空,重新输入。

    效果图.gif

    相关文章

      网友评论

          本文标题:UITextField PlaceHolder垂直居中显示

          本文链接:https://www.haomeiwen.com/subject/ipbhmqtx.html