c - 罕见的创建视图的方法,求指教
怪我咯
怪我咯 2017-05-02 09:29:47
0
1
452

创建视图的方法,但是很诡异,看不懂是什么意思,求大神指教

代码如下:

 UIView *cancel = ({
                    

                    UIButton *view= [UIButton new];
                    view.contentHorizontalAlignment=UIControlContentHorizontalAlignmentLeft;
                    [view setTitle:NSLocalizedString(@"cancel", nil) forState:UIControlStateNormal];
                    [view setTitleColor:Global_trelloBlue forState:UIControlStateNormal];
                    view.titleLabel.font = [UIFont systemFontOfSize:15];
                    [createListView addSubview:view];
                    view.tag = 999;
                    [view makeConstraints:^(MASConstraintMaker *make) {
                        make.left.equalTo(20);
                        make.bottom.equalTo(-1);
                        make.width.equalTo(100);
                    }];
                    [view sizeToFit];
                    view.alpha = 0;
                    [self layoutIfNeeded];
                    //cancel点击事件
                    @weakify(self, view, textView, createListView, listView, add, addCard)
                    [[view rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {
                        @strongify(self, view, textView, createListView, listView, add, addCard)
                        //footer高度还原
                        [createListView updateConstraints:^(MASConstraintMaker *make) {
                            make.height.equalTo(44);
                        }];
                        //list减去footer增加的高度(在这里做是为了动效)
                        [listView updateConstraints:^(MASConstraintMaker *make) {
                            make.height.equalTo(listView.yyHeight-44);
                        }];
                     
                        //隐藏textView
                        textView.alpha = 0;
                        
                        [UIView animateWithDuration:0.25 animations:^{
                            //cancel隐藏
                            view.alpha = 0;
                            //add隐藏
                            add.alpha = 0;
                            //addCard显示
                            addCard.alpha = 1;
                            [self.viewController.navigationController setNavigationBarHidden:NO animated:YES];
                            [self layoutIfNeeded];
                        }];
                        [textView resignFirstResponder];
                    }];
                    view;
                });
怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(1)
習慣沉默

これをコピーしたのはおかしいでしょうか...
addSubviewのパラメータは「({})」のコードブロックに配置され、ビューの作成と属性の設定は「({})」で完了します。コードブロックは最後にあります 1 つの文が追加したいサブビューです。

この書き方はGNU Cの特徴である複合文に準拠しています。つまり、「({})」コード ブロック内に、ループ、分岐、変数宣言、関数呼び出しなどの複数のステートメントを配置できます。複合ステートメントの最後の文は式であり、複合ステートメント全体の最終値として機能します。

Objective-C コードを記述する場合、複合ステートメントを使用すると、コードをよりエレガントにすることができます。特に、多数のサブビューを作成および追加する場合、コードの見た目がすっきりします。普段使いにおすすめです。
ウェブページ

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート