创建视图的方法,但是很诡异,看不懂是什么意思,求大神指教
代码如下:
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;
});
これをコピーしたのはおかしいでしょうか...
addSubviewのパラメータは「({})」のコードブロックに配置され、ビューの作成と属性の設定は「({})」で完了します。コードブロックは最後にあります 1 つの文が追加したいサブビューです。
この書き方はGNU Cの特徴である複合文に準拠しています。つまり、「({})」コード ブロック内に、ループ、分岐、変数宣言、関数呼び出しなどの複数のステートメントを配置できます。複合ステートメントの最後の文は式であり、複合ステートメント全体の最終値として機能します。
Objective-C コードを記述する場合、複合ステートメントを使用すると、コードをよりエレガントにすることができます。特に、多数のサブビューを作成および追加する場合、コードの見た目がすっきりします。普段使いにおすすめです。
ウェブページ