美文网首页ios
UITextField不同状态下外观不同的思路

UITextField不同状态下外观不同的思路

作者: 志城 | 来源:发表于2017-03-23 11:46 被阅读8次

    先看效果图

    编辑状态下和普通状态下的TextField
    • 是不是觉得很眼熟,经常做这种吧。给大家提供一个思路,一般这种我们需要造一个轮子,方便使用。是时候分析一波了:可以看到有2种类型的输入框,第一种右边带有图片的,第二种右边不带图片的。所以造轮子的时候要考虑进去。最好提供2种初始化的方法。但是最终走的都是同一个方法,只是参数有所不同而已(参见OC的工厂模式)。
    • 同时每一个输入框在编辑状态下和普通状态下有显著的不同-边框颜色,右侧图片(如果有右侧图片)都发生了变化。最开始考虑使用代理来监测输入框的输入状态,根据不同的代理方法的状态来改变输入框的外观。但是转念一想似乎不妥,如果外界需要代理呢?难不成代理可以设置为2个对象?我感觉行不通。
    • 于是就想到了这个东西
    - (BOOL)becomeFirstResponder;
    - (BOOL)resignFirstResponder
    

    我们完全可以重写这2个方法啊。
    于是得到了下面的代码,完美解决需求。

    - (BOOL)becomeFirstResponder
    {
        if (self.borderColorForEditing) {
            self.layer.borderColor = _borderColorForEditing.CGColor;
        }
        if (self.rightImageForEditing) {
            [self setRightImageViewForState:UIControlStateFocused];
        }
        return [super becomeFirstResponder];
    }
    - (BOOL)resignFirstResponder
    {
        if (self.borderColorForNormal) {
            self.layer.borderColor = _borderColorForNormal.CGColor;
        }
        if (self.rightImageForNormal) {
            [self setRightImageViewForState:UIControlStateNormal];
        }
        return [super resignFirstResponder];
    }
    
    • 顺便提一下:输入框左侧的文字长度不一致,但要求左右对齐,中间留空,那么可以取巧使用中文的全角打一个或多个空格达到这个效果,当然遇到用这种方式也解决不了的,可以使设置字间距,但是字间距我用过有一些问题,就是最后一个文字没有在最右侧,和容器的最右侧有一定的间距,目前还没找到解决办法。如果哪位仁兄有好的思路,还请不吝赐教!

    相关文章

      网友评论

        本文标题:UITextField不同状态下外观不同的思路

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