简单的链式语法及实际运用(链式编程的基本原理)
生活随笔
收集整理的這篇文章主要介紹了
简单的链式语法及实际运用(链式编程的基本原理)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
不管在什么項目中總會有一些控件,它們樣式相似卻根據不同場景又有所不同。雖然也寫了一些便利構造函數來快速的創建一些控件,但總感覺不盡人意,想用更少的代碼來創建它們。
所以想到了鏈式語法,在查詢部分資料和嘗試后有了這篇日記。
直接百度的參考文章:
http://www.jianshu.com/p/a1458a69f72b
作者的總結很精髓
>首先獲得實例中的一個block,然后執行block并返回實例本身,然后再執行實例的另一個block,而在這個block中同樣返回實例本身,按此規律通過點語法一直往下執行。
接著我試著寫了一個簡單的可以用于快速創建UIButton的類:
.h文件內容
// Created by chizheng #import <UIKit/UIKit.h>@interface CHZButton : UIButton@property (nonatomic, copy) CHZButton * (^setTitle)(NSString *,UIControlState);@property (nonatomic, copy) CHZButton * (^setTitleColor)(UIColor *,UIControlState);@property (nonatomic, copy) CHZButton * (^setFont)(CGFloat);@property (nonatomic, copy) CHZButton * (^setBackgroundColor)(UIColor *);@property (nonatomic, copy) CHZButton * (^setCornerRadius)(CGFloat);@property (nonatomic, copy) CHZButton * (^setImage)(NSString *,UIControlState);@property (nonatomic, copy) CHZButton * (^addAction)(id,SEL,UIControlEvents);@end?
// Created by chizheng #import "CHZButton.h"@implementation CHZButton- (CHZButton * (^)(NSString * title,UIControlState state))setTitle{ return ^(NSString * title,UIControlState state){[self setTitle:title forState:state];return self; }; }- (CHZButton * (^)(UIColor * titleColor,UIControlState state))setTitleColor{ return ^(UIColor * titleColor,UIControlState state){[self setTitleColor:titleColor forState:state];return self; }; }- (CHZButton * (^)(CGFloat font))setFont{ return ^(CGFloat font){self.titleLabel.font = [UIFont systemFontOfSize:font];return self; }; }- (CHZButton * (^)(UIColor * backgroundColor))setBackgroundColor{ return ^(UIColor * backgroundColor){[self setBackgroundColor:backgroundColor];return self; }; }- (CHZButton * (^)(CGFloat cornerRadius))setCornerRadius{ return ^(CGFloat cornerRadius){self.layer.cornerRadius = cornerRadius; self.clipsToBounds = YES;return self; }; }- (CHZButton * (^)(NSString * imageName,UIControlState state))setImage{ return ^(NSString * imageName,UIControlState state){[self setImage:[UIImage imageNamed:imageName] forState:state];return self; }; }- (CHZButton * (^)(id target,SEL selector,UIControlEvents events))addAction{ return ^(id target,SEL selector,UIControlEvents events){[self addTarget:target action:selector forControlEvents:events];return self; }; } @end?
創建按鈕時只需要如下代碼
CHZButton * btn = [CHZButton new]; btn.frame = CGRectMake(Margin_leading, 64, screenW-2*Margin_leading, 44); btn.setFont(18).setTitle(@"測試按鈕", UIControlStateNormal).setBackgroundColor(btn_Color).setCornerRadius(4); btn.addAction(self, @selector(btnAction:), UIControlEventTouchUpInside); [self.view addSubview:btn];?
后來感覺還是寫成UIButton的分類會更好用
轉載于:https://www.cnblogs.com/chzheng/p/7845663.html
總結
以上是生活随笔為你收集整理的简单的链式语法及实际运用(链式编程的基本原理)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP-Socket服务端客户端发送接收
- 下一篇: Jzoj5234 外星人的路径