美文网首页iOS第三方资料收集封装iOS开发实用技术
iOS开发小笔记 | 封装一个带左内边距的UITextField

iOS开发小笔记 | 封装一个带左内边距的UITextField

作者: Lol刀妹 | 来源:发表于2017-03-21 09:48 被阅读515次
    • 直接设置圆角不做其它处理是这样的:

    • 然而设计图上是这样的:

    • 现在简单封装了一下,效果是这样的:

    很强势.png
    • 代码简单明了、可读性高,是这样的:

    注:此控件继承自UITextField

    #pragma mark - 构造方法
    - (instancetype)initWithFrame:(CGRect)frame{
        if (self = [super initWithFrame:frame]) {
            // TextField的左视图
            UIView *leftView = [[UIView alloc]init];
            [self addSubview:leftView];
            [leftView mas_makeConstraints:^(MASConstraintMaker *make) {
                make.top.mas_offset(0);
                make.left.mas_offset(0);
                make.bottom.mas_offset(0);
                make.width.equalTo(self.mas_height).multipliedBy(0.5);
            }];
            
            // 属性设置
            self.backgroundColor = [UIColor whiteColor];
            self.layer.borderColor = [UIColor blackColor].CGColor;
            self.layer.borderWidth = 1;
            self.leftViewMode = UITextFieldViewModeAlways;
            self.leftView = leftView;
        }
        return self;
    }
    
    #pragma mark - 调整UI
    - (void)layoutSubviews{
        [super layoutSubviews];
        // 调整圆角大小
        self.layer.cornerRadius = self.frame.size.height / 2;
    }
    
    • 使用方便,是这样的:

    上面效果图的代码

        LoginViewCustomTextField *textField1 = [[LoginViewCustomTextField alloc]initWithFrame:CGRectMake(90, 90, 200, 40)];
        [self.view addSubview:textField1];
        
        LoginViewCustomTextField *textField2 = [[LoginViewCustomTextField alloc]initWithFrame:CGRectMake(90, 150, 80, 20)];
        [self.view addSubview:textField2];
        
        LoginViewCustomTextField *textField3 = [[LoginViewCustomTextField alloc]init];
        [self.view addSubview:textField3];
        [textField3 mas_makeConstraints:^(MASConstraintMaker *make) {
            make.left.mas_offset(90);
            make.top.mas_equalTo(textField2.mas_bottom).mas_offset(20);
            make.right.mas_offset(-90);
            make.height.mas_equalTo(60);
        }];
    

    相关文章

      网友评论

      • Maj_sunshine:textfield是有个leftview属性的 设置左边距的话 可以看看
        Lol刀妹:@学污直径 哈哈,感觉代码可以优化下:smile:
        Maj_sunshine:@学污直径 这就尴尬了 手机看你代码一片 我还以为这不是呢:sweat:哈哈哈
        Lol刀妹:@学污直径 我的这个就是通过设置leftView来达到这个效果的:sweat_smile:
      • 谢谢生活:哟西,真是灵活运用啊
      • 37e4dd6ddc60:666 正好用到 我还准备等下自己封装呢
        Lol刀妹:@梦战 可以直接使用,效果还可以:smirk:

      本文标题:iOS开发小笔记 | 封装一个带左内边距的UITextField

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