iOS中的螢幕適配之Autolayout(初級),iosautolayout

來源:互聯網
上載者:User

iOS中的螢幕適配之Autolayout(初級),iosautolayout

這是第二篇部落格啦啦啦,來來來,嗨起來,今天我們要說的時iOS的螢幕適配,隨著APPLE推出的手機越來越多,螢幕的尺寸也越來越多,而螢幕的適配確是相當的麻煩,今天我要說的,網上也許早就有了,我只是說出自己的理解(可能不對啊,勿噴....)

Autolayout其實就是約束了,今天講得是代碼添加約束,用到的第三方是Masonry,相信代碼寫約束的都知道這個第三方庫,好了,廢話不多說,代碼搞起

首先你要去下載個Masonry,或者用cocoapods加到工程中,先來個簡單點得例子啊,下面請重點看注釋啊

UIView *view1 = [[UIView alloc] init];    view1.backgroundColor = [UIColor blackColor];    [self.view addSubview:view1];    [view1 mas_makeConstraints:^(MASConstraintMaker *make) {        //使view1的中點座標等於self.view的中點        make.center.equalTo(self.view);        //設定view1的size為寬度300,高度300,這裡的mas_equalTo好像是設定具體數值用的,而equalTo卻不是        make.size.mas_equalTo(CGSizeMake(300, 300));    }];

運行效果

UIView *view1 = [[UIView alloc] init]; view1.backgroundColor = [UIColor blackColor]; [self.view addSubview:view1]; UIView *view2 = [[UIView alloc] init]; view2.backgroundColor = [UIColor cyanColor]; [self.view addSubview:view2]; [view1 mas_makeConstraints:^(MASConstraintMaker *make) { //view1的左邊距離self.view的左邊距離為20 make.left.equalTo(self.view.mas_left).offset(20); //view1的右邊距離view2的左邊距離為為-10,為什麼是負數,其實是往右邊是正,左邊為負啦(我自己理解的啊),top和buttom也一樣 make.right.equalTo(view2.mas_left).offset(-10); //這句的意思就是view1的中點得Y值等於self.view的中點的Y值 make.centerY.mas_equalTo(self.view.mas_centerY); //view1的高度是150,這裡要用對象 make.height.mas_equalTo(@150); //view1的寬度等於view2 make.width.equalTo(view2); }]; [view2 mas_makeConstraints:^(MASConstraintMaker *make) { //view2的左邊距離view1的右邊距離為10,其實就是間隔為10了 make.left.equalTo(view1.mas_right).offset(10); //view2的右邊距離self.view的右邊距離為-30,自己腦補為什麼是負的啊 make.right.equalTo(self.view.mas_right).offset(-30); //這句的意思就是view2的中點得Y值等於self.view的中點的Y值 make.centerY.mas_equalTo(self.view.mas_centerY); //view2的高度是150,這裡要用對象 make.height.mas_equalTo(@150); //view2的寬度等於view1 make.width.equalTo(view1); }];

運行效果如下

是不是棒棒噠,我們再來寫個3塊view的,其中2塊view的位置和上面一樣,第三塊view在第二塊view的右邊,距離為15,第三塊view右邊距離父視圖距離為20,我希望小夥伴們自己試試,如果一遍就能敲出來所需要的效果的話,證明Masonry已經入門了

UIView *view1 = [[UIView alloc] init];    view1.backgroundColor = [UIColor blackColor];    [self.view addSubview:view1];        UIView *view2 = [[UIView alloc] init];    view2.backgroundColor = [UIColor cyanColor];    [self.view addSubview:view2];        UIView *view3 = [[UIView alloc] init];    view3.backgroundColor = [UIColor redColor];    [self.view addSubview:view3];        [view1 mas_makeConstraints:^(MASConstraintMaker *make) {        //view1的左邊距離self.view的左邊距離為20        make.left.equalTo(self.view.mas_left).offset(20);        //view1的右邊距離view2的左邊距離為為-10,為什麼是負數,其實是往右邊是正,左邊為負啦(我自己理解的啊),top和buttom也一樣        make.right.equalTo(view2.mas_left).offset(-10);        //這句的意思就是view1的中點得Y值等於self.view的中點的Y值        make.centerY.mas_equalTo(self.view.mas_centerY);        //view1的高度是150,這裡要用對象        make.height.mas_equalTo(@150);        //view1的寬度等於view2        make.width.equalTo(view2);    }];    [view2 mas_makeConstraints:^(MASConstraintMaker *make) {        //view2的左邊距離view1的右邊距離為10        make.left.equalTo(view1.mas_right).offset(10);        //view2的右邊距離view3的右邊距離為-15,自己腦補為什麼是負的啊        make.right.equalTo(view3.mas_left).offset(-15);        //這句的意思就是view2的中點得Y值等於self.view的中點的Y值        make.centerY.mas_equalTo(self.view.mas_centerY);        //view2的高度是150,這裡要用對象        make.height.mas_equalTo(@150);        //view2的寬度等於view3        make.width.equalTo(view3);    }];        [view3 mas_makeConstraints:^(MASConstraintMaker *make) {        //view3的左邊距離view2的右邊距離為15        make.left.equalTo(view2.mas_right).offset(15);        //view3的右邊距離self.view的右邊距離為-20,自己腦補為什麼是負的啊        make.right.equalTo(self.view.mas_right).offset(-20);        //這句的意思就是view3的中點得Y值等於self.view的中點的Y值        make.centerY.mas_equalTo(self.view.mas_centerY);        //view3的高度是150,這裡要用對象        make.height.mas_equalTo(@150);        //view3的寬度等於view1        make.width.equalTo(view1);    }];

運行效果

今天的部落格就寫到這裡的,希望大家能夠入門,暫時還沒在項目中用這種約束,都是比例寫的適配(其實效果不怎麼好,但沒有Autolayout這麼麻煩),在以後的項目中試試Masonry寫適配,其實這些都是我自己的理解,如果不對的話,歡迎指正,謝謝

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.