下圖是
UITextField
光標(biāo)的起始位置他宛。如果要改變UITextfield
的光標(biāo)的起始位置,我們只有重寫它的方法- (CGRect)editingRectForBounds:(CGRect)bounds;
可是更舞,對于繼承很不方便草描,擴(kuò)展一個(gè)分類,可以修改UITextfield的光標(biāo)位置是最方便不過萍丐。
利用runtime 為UITextfield添加一個(gè)屬性拣宰,
tintAjust
,通過修改tintAjust
可以修改編輯區(qū)域起始位置党涕。不能重寫上面的方法,可以利用UITextfield的leftview做文章巡社,左邊主要是一個(gè)透明的視圖即可膛堤。
@interface UITextField (TintAjust)
@property(nonatomic,assign)CGFloat tintAjust; //擴(kuò)展屬性
@end
#import "UITextField+TintAjust.h"
#import <objc/runtime.h>
static NSString *adjust = @"adjust";
@implementation UITextField (TintAjust)
-(void)setTintAjust:(CGFloat )tintAjust{
objc_setAssociatedObject(self, &adjust, @(tintAjust), OBJC_ASSOCIATION_ASSIGN);
UILabel * leftView = [[UILabel alloc] initWithFrame:CGRectMake(tintAjust,0,tintAjust,self.frame.size.height)];
leftView.backgroundColor = [UIColor clearColor];
self.leftView = leftView;
self.leftViewMode = UITextFieldViewModeAlways;
}
-(CGFloat)tintAjust{
id value = objc_getAssociatedObject(self, &adjust);
return [value floatValue ];
}
@end
使用方法:
textField.tintAjust = 30;
UITextField *textField =[[UITextField alloc]initWithFrame:CGRectMake(20, 100, 200, 40)];
textField.backgroundColor =[UIColor redColor];
textField.borderStyle = UITextBorderStyleNone;
textField.placeholder = @"請選擇";
[self.view addSubview:textField];
textField.tintAjust = 30;
NSLog(@"%f",textField.tintAjust);
效果圖: