您当前的位置: 首页 >  ui

培根芝士

暂无认证

  • 1浏览

    0关注

    446博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

修改UITextField文本内边距和两侧View

培根芝士 发布时间:2021-03-09 15:15:02 ,浏览量:1

首先需要创建一个类继承UITextField,然后重写 textRectForBounds,placeholderRectForBounds 和 editingRectForBounds 方法


@interface MyTextField : UITextField

/// 文本内容边距
@property (nonatomic, assign) CGFloat padding;

@end
// 控制文本的边距
- (CGRect)textRectForBounds:(CGRect)bounds {
    if (self.padding > 0) {
        return CGRectInset(bounds, self.padding, 0);
    }
    return bounds;
}

// 控制 placeHolder 的边距
- (CGRect)placeholderRectForBounds:(CGRect)bounds {
    if (self.padding > 0) {
        return CGRectInset(bounds, self.padding, 0);
    }
    return bounds;
}

// 控制编辑状态文本的边距
- (CGRect)editingRectForBounds:(CGRect)bounds {
    if (self.padding > 0) {
        return CGRectInset(bounds, self.padding, 0);
    }
    return bounds;
}

设置UITextField左右两侧的view,然后重写 leftViewRectForBounds 和 rightViewRectForBounds。

// 设置左侧视图
- (void)addLeftView:(UIView *)leftView {
    self.leftView = leftView;
    self.leftViewMode = UITextFieldViewModeAlways;
}

- (CGRect)leftViewRectForBounds:(CGRect)bounds {
    if (self.leftView) {
        return CGRectMake(0, 0, self.leftView.width, bounds.size.height);
    }
    return [super leftViewRectForBounds:bounds];
}

// 设置右侧视图
- (void)addRightView:(UIView *)rightView {
    self.rightView = rightView;
    self.rightViewMode = UITextFieldViewModeAlways;
}

- (CGRect)rightViewRectForBounds:(CGRect)bounds {
    if (self.rightView) {
        return CGRectMake(bounds.size.width-self.rightView.width, 0, self.rightView.width, bounds.size.height);
    }
    return [super rightViewRectForBounds:bounds];
}

 

关注
打赏
1660824269
查看更多评论
立即登录/注册

微信扫码登录

0.0364s