IOS開發-自動布局Autoresizing和Autolayout

來源:互聯網
上載者:User

標籤:

蘋果的自動布局有兩種:
(1)Autoresizing
(2)Autolayout
下面先介紹Autoresizing:
在開始使用前,我們要對xcode進行設定,因為預設xcode是開啟Autolayout的,按照下面兩張圖就能開啟Autoresizing了。

然後按照,選到對應選項卡就能使用autoresizing的功能了。

現在用autoresizing做一個練習,讓一個控制項始終在父控制項右下角,如設定對應 的view就可以了:(點擊就可以取消或者添加)

這樣運行就行了。方框外面是控制項與父控制項的邊距,小方框裡面是設定控制項的寬高。
當然 我們也可以通過代碼設定控制項的autoresizing。像上面的效果我們需要添加的代碼如下:

self.startButton.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleWidth;

其中autoresizingMask對應的值,下面來一個介紹:

typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {        UIViewAutoresizingNone                 = 0,        //這下面四個是設定那一個方向的Autoresizing是沒有固定的,也就是在面板那裡這個線不是紅色的。        UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,  //比如設定這個屬性,就意味著左邊那根線是沒有選中的        UIViewAutoresizingFlexibleRightMargin  = 1 << 2,        UIViewAutoresizingFlexibleTopMargin    = 1 << 3,        UIViewAutoresizingFlexibleBottomMargin = 1 << 5        UIViewAutoresizingFlexibleWidth        = 1 << 1,  //寬度跟隨父控制項的寬度變化        UIViewAutoresizingFlexibleHeight       = 1 << 4,  //高度跟隨父控制項的高度變化    };

這樣設定好就跟剛才需要的效果一致了。無論螢幕怎麼旋轉都是在右下角。

但是Autoresizing有個缺點就是,他是用來設定與父控制項的關係。如果遇到需要設定兩個同級的控制項的關係,Autoresizing就不能做到了,這個時候我們就要接觸到Autolayout了。

xcode預設一建立項目就是支援Autolayout了。在下面這個位置就能設定Autolayout相應的屬性:

接下來就按照這樣設定就能得到跟上面要求的效果一致了:

記得選擇update frames的值,不然控制項還是保持原來的位置,實際上運行他是會改變位置,但是在xcode裡面是沒有直接重新整理。

當然我們也能通過代碼設定Autolayout達到上面的效果:

[self.startButton setBackgroundColor:[UIColor redColor]];    //這句必須設定    self.startButton.translatesAutoresizingMaskIntoConstraints = NO;    //添加寬度約束 100    NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:self.startButton attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0.0 constant:100];    [self.startButton addConstraint:widthConstraint];    //添加高度約束 40    NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:self.startButton attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0.0 constant:50];    [self.startButton addConstraint:heightConstraint];    //添加右邊約束    NSLayoutConstraint *rightConstraint = [NSLayoutConstraint constraintWithItem:self.startButton attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:0];    [self.view addConstraint:rightConstraint];    //添加底部約束    NSLayoutConstraint *bottomConstraint = [NSLayoutConstraint constraintWithItem:self.startButton attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0];    [self.view addConstraint:bottomConstraint];

大家看到要做到這個效果就要打這麼多代碼。
大概這些就是這兩個自動布局的初步介紹了。

IOS開發-自動布局Autoresizing和Autolayout

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.