iosはどのように迅速にコントロールの属性を設定して、“set”“=”に別れを告げます

2465 ワード

実際の開発では、純粋なコードで開発する場合、インタフェースUIを書くことが最も頭を悩ませ、label、buttonごとに属性設定を行い、このようなコントロールをたくさん考えてみると、「set」=「それはどんなに面倒なことか.だから、自分を“怠け者”にするためにそんなに“set=”を書かなければならなくて、私はここで自分でチェーン式の設置ツールを書いて、しかも原生の方法に影響しません.書く前に、labelとbutton:labelを定義する方法を見てみましょう.
label.text = labelText; 
label.font = [UIFont systemFontOfSize:12];
label.font = [UIFont fontWithName:@"Arial" size:30];
label.textColor = [UIColor lightGrayColor];
label.textAlignment = NSTextAlignmentLeft; 
...

button:
[button setTitle:@"On" forState:UIControlStateNormal];

[button setTitle:@"On" forState:UIControlStateHighlighted];

[button setBackgroundImage:baseGreen forState:UIControlStateNormal];

[button setBackgroundImage:altGreen forState:UIControlStateHighlighted];
...

プロジェクトにUIのコードがこんなにたくさん書かれているのを見て、頭が痛いことがあります.label(button)ではありませんか.どうしてこんなにたくさんの行が必要ですか.それで、私の書き方はこうです.label:
// , 
label.en_alignment(NSTextAlignmentCenter).en_color([UIColor redColor]);
// 
label.en_text(@"1233123").en_font([UIFont systemFontOfSize:11]);

button:
// , 
button.en_bgColor([UIColor redColor]).en_normalTitleColor([UIColor blackColor]);
// , ,     
button.en_font(@11).en_highLightTitle(@" ").en_normalTitle(@" ");

チェーンで書くこともできますし、順序の制限はありません.はい、これが私のプロジェクトで使用したプロパティの設定方法です.原理については、実は簡単です.ゆっくり話してください.
原理:ここでは明らかにチェーンプログラミングを使用しているが、ocではチェーンプログラミングを実現するためにblock(ここではlabelを例に挙げる):PS:私はUILabelの分類で実現した.
  • block
  • を定義する
    func:  label 
    parameter: string  
    return:  label 
    typedef UILabel *(^blockText)(NSString *string);
    
  • はlabel文字を取得するgetterメソッドを宣言し、
  • を実現する.
    // 
    - (blockText)en_text;// block 
    
    // 
    
    - (blockText)en_text{
        return ^UILabel *(NSString *text){
            weakSelf.text = text;
            return self;
        };
    }
    

    このように、1つの属性の設定を完了するのは、比較的簡単であり、他の属性の設定を見る必要がある場合はdemoが詳細に表示される.
    また、私はこのdemoに面白い機能を追加しました:button初期化はクリックを実現することができます:
    // 
        UIButton *button = [[UIButton alloc] initWithCallBackButtonClickBlock:^(UIButton *button) {
            NSLog(@" ");
        }];
    

    次のように、コントロールをすばやく初期化する方法が追加されました.
    // self 
    UIView *view = self.instanceInit(TypeView);
    //UIView 
    UIView *view = UIView.classInit(TypeView);
    

    原理もチェーンプログラミングの思想を通じて、NSObjectのために1つの分類をプラスして、demoを見てください.
    以上、私たちが開発をより効率的にするために、これらの小さなものはやはり価値があります.ありがとうございます.