UITextField leftView

当我们给leftview设置图片时会发现图片紧贴输入框的左侧,很不美观。设置一定的边距有两种方法:

  1. 新建TextField继承自原有的UITextField, 重写UITextField的- (CGRect)leftViewRectForBounds:(CGRect)bounds方法;
- (CGRect)leftViewRectForBounds:(CGRect)bounds
{
    CGRect iconRect = [super leftViewRectForBounds:bounds];
    iconRect.origin.x += 15; //向右边偏15
    return iconRect;
}

但是这种方法会影响光标的位置,所以还需要重写文字输入的边距。

//UITextField 文字与输入框的距离
- (CGRect)textRectForBounds:(CGRect)bounds{
    
    return CGRectInset(bounds, 45, 0);
    
}

//控制文本的位置
- (CGRect)editingRectForBounds:(CGRect)bounds{
    
    return CGRectInset(bounds, 45, 0);
}

参考自https://www.jianshu.com/p/f93b005dc9d4

可以看出上面的方法有点繁琐,下面介绍第二种方案。

  1. 自定义UIView,将UIImageView添加到UIView上。
    UIImageView *search = [[UIImageView alloc] initWithImage:UIImageMake(@"search")];
    UIView *tmpview = [[UIView alloc]initWithFrame:CGRectMake(-10, 10, 20, 20)];
    [tmpview addSubview:search];
    search.frame = CGRectMake(12, 4, 12, 12);
    _field.leftView = tmpview;

你可能感兴趣的:(UITextField leftView)