찾다

 >  Q&A  >  본문

c - 罕见的创建视图的方法,求指教

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

代码如下:

 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;
                });
怪我咯怪我咯2757일 전460

모든 응답(1)나는 대답할 것이다

  • 習慣沉默

    習慣沉默2017-05-02 09:31:47

    이상한가요? 제가 복사한게...
    addSubview의 매개변수는 "({})" 코드 블록에 배치되고, 뷰의 생성 및 속성 설정은 "({ })" , 코드 블록의 마지막 문장은 우리가 추가하려는 하위 뷰입니다.

    이 작성 ​​방법은 GNU C의 기능인 복합문을 따릅니다. 즉, "({})" 코드 블록에는 루프, 분기, 변수 선언, 함수 호출 등이 될 수 있는 여러 문을 배치할 수 있습니다. 복합문의 마지막 문장은 전체 복합문의 최종값이 되는 표현이다.

    Objective-C 코드를 작성할 때 복합문을 사용하면 코드가 더욱 우아해지며, 특히 여러 개의 하위 뷰를 생성하고 추가할 때 코드가 더 깔끔해 보일 수 있습니다. 정기적으로 사용하는 것이 좋습니다.
    웹페이지

    회신하다
    0
  • 취소회신하다