修改UITextfield的leftview的位置

继承UITextfield实现子类CustomTF,复写-(CGRect)leftViewRectForBounds:(CGRect)bounds 方法

在这个例子中,给 textfield添加了类别,里面添加方法+ (instancetype)textFieldWithFrame:(CGRect )frame withText:(NSString *)text;

屏幕快照 2017-11-17 下午9.54.23.png

在分类中添加方法中,初始化方法一定要写成[ [self alloc]init]
而不能写成[ [UITextfield alloc]init] 否则重写的方法不会执行。并且如果CustomTF有自己的属性(比如name)时,调用属性会崩溃 。
例如:
CustomTF *textTF = [CustomTF textFieldWithFrame:CGRectMake(100, 200, 200, 100) withText:@"text"];
textTF.name 就会报错 。
因为 [ [UITextfield alloc]init] 会造成发放返回的类是UITextfield,而不是CustomTF,而UITextfield根本没有name属性。
不执行的原因是根本就没有初始化 CustomTF, 可以说和CustomTF没有关系,虽然它能调用分类的方法,但实际上返回的并不是CustomTF,而如果是[ [self alloc]init] 返回的是CustomTF

你可能感兴趣的:(修改UITextfield的leftview的位置)