iOS開發(fā)丨使用閉包Block來進行初始化

在iOS開發(fā)中,閉包也就是Block是一種常用的特殊類型,可以正常定義變量、作為參數(shù)、作為返回值,還可以聲明賦值去保存一段代碼,在需要調用的地方去調用,目前Block已經(jīng)廣泛應用于各類回調傳值、排序遍歷、GCD、動畫等。

下面,介紹一種比較冷門的使用閉包來進行初始化的例子,好處是在需要生成多個相同實例的時候會比較方便,代碼上看著也比較整齊和清晰。

傳統(tǒng)寫法:

UILabel *titleLabel = [[UILabel alloc] init];
titleLabel.font = [UIFont systemFontOfSize:17 weight:UIFontWeightRegular];
titleLabel.textColor = [UIColor blackColor];
titleLabel.textAlignment = NSTextAlignmentCenter;
titleLabel.frame = CGRectMake(15, 15, 200, 30);
titleLabel.text = @"我是標題";
[self.view addSubview:titleLabel];

UILabel *textLabel = [[UILabel alloc] init];
textLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightRegular];
textLabel.textColor = [UIColor blackColor];
textLabel.textAlignment = NSTextAlignmentCenter;
textLabel.frame = CGRectMake(15, 60, 200, 30);
textLabel.text = @"我是文本";
[self.view addSubview:textLabel];

閉包寫法:

UILabel *titleLabel = ^{
    UILabel *label = [[UILabel alloc] init];
    label.font = [UIFont systemFontOfSize:17 weight:UIFontWeightRegular];
    label.textColor = [UIColor blackColor];
    label.textAlignment = NSTextAlignmentCenter;
    label.frame = CGRectMake(15, 15, 200, 30);
    label.text = @"我是標題";
    return label;
}();
[self.view addSubview:titleLabel];

UILabel *textLabel = ^{
    UILabel *label = [[UILabel alloc] init];
    label.font = [UIFont systemFontOfSize:15 weight:UIFontWeightRegular];
    label.textColor = [UIColor blackColor];
    label.textAlignment = NSTextAlignmentCenter;
    label.frame = CGRectMake(15, 60, 200, 30);
    label.text = @"我是文本";
    return label;
}();
[self.view addSubview:textLabel];

或者:

UILabel *(^newLabel)(NSString*, CGFloat) = ^(NSString *text, CGFloat fontSize) {
    UILabel *label = [[UILabel alloc] init];
    label.font = [UIFont systemFontOfSize:fontSize weight:UIFontWeightRegular];
    label.textColor = [UIColor blackColor];
    label.textAlignment = NSTextAlignmentCenter;
    label.text = text;
    return label;
};

UILabel *titleLabel = newLabel(@"我是標題", 17);
titleLabel.frame = CGRectMake(15, 15, 200, 30);
[self.view addSubview:titleLabel];

UILabel *textLabel = newLabel(@"我是文本", 15);
textLabel.frame = CGRectMake(15, 60, 200, 30);
[self.view addSubview:textLabel];
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容