UITextField leftView
2019-08-29 本文已影响0人
smallLabel
当我们给leftview设置图片时会发现图片紧贴输入框的左侧,很不美观。设置一定的边距有两种方法:
- 新建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
可以看出上面的方法有点繁琐,下面介绍第二种方案。
- 自定义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;