快速创建UILabel, UIButton, UITedtFie
2017-11-17 本文已影响10224人
Thinkdifferents
链式编程创建view,优雅而又快捷
正常写法
UILabel *label = [[UILabel alloc] init];
label.frame = CGRectMake(100, 100, 100, 30);
label.text = @"label";
label.font = [UIFont systemFontOfSize:14];
label.textColor = [UIColor clearColor];
label.textAlignment = NSTextAlignmentLeft;
label.numberOfLines = 1;
label.backgroundColor = [UIColor clearColor];
label.lineBreakMode = NSLineBreakByWordWrapping;
label.shadowColor = [UIColor blackColor];
label.shadowOffset = CGSizeMake(0, 0);
[self.view addSubview:label];
UIView *view = [[UIView alloc] init];
view.frame = CGRectMake(100, 100, 60, 30);
view.backgroundColor = [UIColor redColor];
[self.view addSubview:view];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(100, 100, 60, 30);
[button setTitle:@"button" forState:UIControlStateNormal];
button.titleLabel.font = [UIFont systemFontOfSize:14];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];
[button setImage:[UIImage imageNamed:@"image"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"image"] forState:UIControlStateSelected];
[button setBackgroundImage:[UIImage imageNamed:@"image"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"image"] forState:UIControlStateSelected];
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
button.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
button.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
button.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
button.contentEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
[button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
UITextField *textField = [[UITextField alloc] init];
textField.placeholder = @"placeholder";
textField.borderStyle = UITextBorderStyleNone;
textField.clearsOnBeginEditing = true;
textField.secureTextEntry = true;
textField.clearsOnBeginEditing = true;
textField.returnKeyType = UIReturnKeyDefault;
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
textField.leftView = [UIView new];
textField.leftViewMode = UITextFieldViewModeAlways;
textField.clearButtonMode = UITextFieldViewModeAlways;
[self.view addSubview:textField];
开挂写法
+ (UILabel)labelWithText:(NSString *)text
Font:(UIFont *)font
TextColor:(UIColor *)textColor
TextAlignment:(NSInteger)textAlignment
NumberOfLines:(NSInteger)numberOfLines
BackgroundColor:(UIColor *)backgroundColor
LineBreakMode:(NSInteger)lineBreakMode
ShadowColor:(UIColor *)shadowColor
ShadowOffset:(CGSize)shadowOffset;
这仅仅是一个label的, 虽然不设置的地方参数可以传nil, 但是, 这像豫章书院让学生背的课文一样长的方法, 实在让人无心敲代码!
于是参考masonry, LEEAlert, 封装了一个分类, 可以帮你快速创建 label, button, textfield
介绍一下使用 (UIlabel 为例, 其他使用方法雷同).
@property (weak, nonatomic) IBOutlet UIView *grayView;
// 传nil, 标示不进行默认是设置, 完全有自己设置
UILabel *label1 = [UILabel speedCreatLabelWith:nil];
[self.grayView addSubview:label1];
// 在block里面可以 一直使用点语法, 设置属性值
UILabel *label2 = [UILabel speedCreatLabelWith:^(SWLabel *label) {
label.sText(@"label2")
.sBackgroundColor([UIColor redColor])
.sFrame(CGRectMake(10, 40, 60, 30))
.sFont([UIFont systemFontOfSize:16])
.sTextColor([UIColor whiteColor]);
}];
[self.grayView addSubview:label2];
// 你也可以想一个链条一样, 一直这么练下去, 而不是用block
// 不调用config 代表不进行默认设置
[self.grayView addSubview:(
[SWLabel label]
.sFrame(CGRectMake(10, 80, 60, 30))
.sText(@"label3")
.sBackgroundColor([UIColor orangeColor])
)];
// 调用config进行默认设置
[self.grayView addSubview:(
[SWLabel label].config()
.sFrame(CGRectMake(10, 120, 60, 30))
.sText(@"label4")
)];
效果:
