文章标题

很多时候,我们往往这么写代码:


    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”)
)];
“`

效果:

Snip20171117_46.png

你可以根据项目需求, 在方法内部给 控件设置 最常用的属性, 遇见差异再更改, 从而减少代码
还有, 虽然block里面使用了self, 但是循环引用 不存在的,放心使用

GitHub链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值