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

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

作者: 无夜之星辰 | 来源:发表于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属性的 设置左边距的话 可以看看
    无夜之星辰:@学污直径 哈哈,感觉代码可以优化下:smile:
    Maj_sunshine:@学污直径 这就尴尬了 手机看你代码一片 我还以为这不是呢:sweat:哈哈哈
    无夜之星辰:@学污直径 我的这个就是通过设置leftView来达到这个效果的:sweat_smile:
  • 谢谢生活:哟西,真是灵活运用啊
  • 37e4dd6ddc60:666 正好用到 我还准备等下自己封装呢
    无夜之星辰:@梦战 可以直接使用,效果还可以:smirk:

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

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