iOS 基于Masonry 循環(huán)創(chuàng)建view

循環(huán)創(chuàng)建多個view 是在簡單不過的事 但是多數(shù)時間建立約束時 都是用的init方法 這里記錄一下用Masonry 建立約束的方法

  • 先創(chuàng)建裝載的“容器”
_scrollView = [[UIScrollView alloc] initWithFrame:CGRectZero];
    _scrollView.delegate = self;
    _scrollView.pagingEnabled = YES;
    _scrollView.showsHorizontalScrollIndicator = NO;
    [self.view addSubview:_scrollView];
    
    [_scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerX.equalTo(self.view.mas_centerX);
        make.centerY.equalTo(self.view.mas_centerY).with.offset(-50);
        make.width.equalTo(@(200));
        make.height.equalTo(@(200));
    }];

    _scrollView.backgroundColor = [UIColor lightGrayColor];
  • 自定義view
    需要循環(huán)創(chuàng)建的view 多數(shù)情況下是都是傳入自定義的view
    這里 就用這個代替
    //此處可以傳view數(shù)組  
     NSMutableArray * viewARR = [NSMutableArray array];
    for (int a = 0; a < 3; a ++) {
        UIView * arrview = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
        arrview.backgroundColor = [UIColor whiteColor];
        [viewARR addObject:arrview];
       
    }

  • 建立約束

左右滾動

    UIView * contenview = [UIView new];
    [_scrollView addSubview:contenview];
    [contenview mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.equalTo (_scrollView);
        make.height.equalTo (_scrollView); 此處沒有設置寬的約束
    }];
    
    //關于這個延遲 因為masory創(chuàng)建約束之后 獲取的frame 是(0,0塌碌,0渊胸,0)但是有一個延遲的話 才能獲取真是的view的大小  延遲時間改成0 也可以  
  
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        NSLog(@"******%@",contenview);
    });

    UIView * lastView ;
//顏色數(shù)組
    NSArray * colors = @[ [UIColor purpleColor] , [UIColor orangeColor],   [UIColor redColor]];
    for (int i = 0; i < viewARR.count ; i++) {
        UIView * view = viewARR[i];
        [contenview addSubview:view];

        [view mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.equalTo (contenview.mas_top);
            make.bottom.equalTo (contenview.mas_bottom);
            make.left.equalTo(lastView ? lastView.mas_right: @0).offset(10);
            make.width.equalTo (_scrollView.mas_width);
        }];
        view.backgroundColor = colors[i];
        lastView = view;
        
       //        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//            NSLog(@"=======%d___%@",i,lastView);
//        });
  }

    [contenview mas_updateConstraints:^(MASConstraintMaker *make) {
        make.right.equalTo(lastView.mas_right);
    }];

上下滾動

 UIView * contenview = [UIView new];
    [_scrollView addSubview:contenview];
    [contenview mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.equalTo (_scrollView);
        make.width.equalTo (_scrollView);
        
    }];
    
    //關于這個延遲 因為masory創(chuàng)建約束之后 獲取的frame 是(0,0台妆,0翎猛,0)但是有一個延遲的話 才能獲取真是的view的大小  延遲時間改成0 也可以
    
//    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//        NSLog(@"******%@",contenview);
//    });
    
    UIView * lastView ;
    //顏色數(shù)組
    NSArray * colors = @[ [UIColor purpleColor] , [UIColor orangeColor],   [UIColor redColor]];
    for (int i = 0; i < viewARR.count ; i++) {
        UIView * view = viewARR[i];
        [contenview addSubview:view];
        
        [view mas_makeConstraints:^(MASConstraintMaker *make) {
            make.left.equalTo (contenview.mas_left);
            make.right.equalTo (contenview.mas_right);
            make.top.equalTo(lastView ? lastView.mas_bottom: @0).offset(10);
            make.height.equalTo (_scrollView.mas_height);
        }];
        view.backgroundColor = colors[i];
        lastView = view;
        
                dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                    NSLog(@"=======%d___%@",i,lastView);
                });
    }
    
    [contenview mas_updateConstraints:^(MASConstraintMaker *make) {
        make.bottom.equalTo(lastView.mas_bottom);
    }];

其實就是基于Masonry 和三目運算實現(xiàn) (lastView ? lastView.mas_right: @0).offset(10)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市接剩,隨后出現(xiàn)的幾起案子切厘,更是在濱河造成了極大的恐慌,老刑警劉巖懊缺,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疫稿,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機而克,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門靶壮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人员萍,你說我怎么就攤上這事腾降。” “怎么了碎绎?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵螃壤,是天一觀的道長。 經(jīng)常有香客問我筋帖,道長奸晴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任日麸,我火速辦了婚禮寄啼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘代箭。我一直安慰自己墩划,他們只是感情好,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布嗡综。 她就那樣靜靜地躺著乙帮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪极景。 梳的紋絲不亂的頭發(fā)上察净,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機與錄音盼樟,去河邊找鬼氢卡。 笑死,一個胖子當著我的面吹牛晨缴,可吹牛的內(nèi)容都是我干的异吻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼喜庞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了棋返?” 一聲冷哼從身側(cè)響起延都,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎睛竣,沒想到半個月后晰房,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡殊者,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年与境,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猖吴。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡摔刁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出海蔽,到底是詐尸還是另有隱情共屈,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布党窜,位于F島的核電站拗引,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏幌衣。R本人自食惡果不足惜矾削,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望豁护。 院中可真熱鬧哼凯,春花似錦、人聲如沸择镇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腻豌。三九已至家坎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吝梅,已是汗流浹背虱疏。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留苏携,地道東北人做瞪。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像右冻,于是被迫代替她去往敵國和親装蓬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一纱扭、前言 關于蘋果的布局一直是我比較糾結(jié)的問題牍帚,是寫代碼來控制布局,還是使用storyboard來控制布局呢乳蛾?以前...
    iplaycodex閱讀 2,446評論 0 1
  • Masonry是一個輕量級的布局框架暗赶,擁有自己的描述語法鄙币,采用更優(yōu)雅的鏈式語法封裝自動布局,簡潔明了并具有高可讀性...
    3dcc6cf93bb5閱讀 1,765評論 0 1
  • (一)Masonry介紹 Masonry是一個輕量級的布局框架 擁有自己的描述語法 采用更優(yōu)雅的鏈式語法封裝自動布...
    木易林1閱讀 2,334評論 0 3
  • iOS_autoLayout_Masonry 概述 Masonry是一個輕量級的布局框架與更好的包裝AutoLay...
    指尖的跳動閱讀 1,162評論 1 4
  • 自從初二這個中二年紀入了網(wǎng)絡小說這個坑以來,我就發(fā)現(xiàn)我從來沒爬起來過岳锁。 五年期間大部分精力時間都花在通宵達旦看小說...
    好玩的世界閱讀 380評論 0 1