iOS界面佈局之一——使用autoresizing進行動態佈局

iOS界面佈局之一——使用autoresizing進行動態佈局

autoresizing是iOS中傳統的界面自動佈局方式,經過它,當父視圖frame變換時,子視圖會自動的作出相應的調整。佈局

1、經過代碼進行佈局

任何一個view都有autoresizingMask這個屬性,經過這個屬性能夠設置當前view與其父視圖的相對關係。咱們先來看UIViewAutoresizing這個枚舉:spa

typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
    UIViewAutoresizingNone                 = 0,//默認
    UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,//與父視圖右邊間距固定,左邊可變
    UIViewAutoresizingFlexibleWidth        = 1 << 1,//視圖寬度可變
    UIViewAutoresizingFlexibleRightMargin  = 1 << 2,//與父視圖左邊間距固定,右邊可變
    UIViewAutoresizingFlexibleTopMargin    = 1 << 3,//與父視圖下邊間距固定,上邊可變
    UIViewAutoresizingFlexibleHeight       = 1 << 4,//視圖高度可變
    UIViewAutoresizingFlexibleBottomMargin = 1 << 5//與父視圖上邊間距固定,下邊可變
};

下面咱們經過效果來看這些屬性的做用:code

先建立兩個view,爲了區分,設置不一樣的背景色:博客

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UIView * view1 = [[UIView alloc]initWithFrame:CGRectMake(20, 40, 200, 200)];
    view1.backgroundColor=[UIColor redColor];
    UIView * view2 = [[UIView alloc]initWithFrame:CGRectMake(10, 10, 100, 100)];
    view2.backgroundColor=[UIColor greenColor];
    [view1 addSubview:view2];
    [self.view addSubview:view1];
}

設置view2的自動佈局屬性以下:it

 view2.autoresizingMask=UIViewAutoresizingFlexibleBottomMargin;

這時的效果以下:io

改變view1的frame以下:可視化

UIView * view1 = [[UIView alloc]initWithFrame:CGRectMake(20, 40, 300, 300)];

效果以下:autolayout

這時view2的下邊距離相對父視圖是可變的。im

設置以下:技術

   view2.autoresizingMask=UIViewAutoresizingFlexibleHeight;

效果以下:

能夠看出,這時子視圖的高度是隨父視圖變化而自動改變的。

以下設置:

view2.autoresizingMask=UIViewAutoresizingFlexibleLeftMargin;

效果以下:

這時子視圖的左邊是隨父視圖變化而可變的。

同理,UIViewAutoresizingFlexibleRightMargin將使子視圖右邊與父視圖的距離可變。

UIViewAutoresizingFlexibleTopMargin將使子視圖上邊與父視圖距離可變。UIViewAutoresizingFlexibleWidth將使子視圖的寬度可變。

注意:這些自動佈局的屬性是能夠疊加的,好比保持視圖與父視圖邊距不變,以下設置:

view2.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;

效果以下:

2、nib文件中可視化設置自動佈局

在storyboard中咱們能夠更加輕鬆的進行autoresizing自動佈局。在view設置欄中有autoresizing這個設置,點中相應的箭頭,就是剛纔咱們探討的設置選項。而且咱們把鼠標放在這個上面的時候,右側會自動爲咱們預覽效果。

若是你以爲autoresizing很強大,那麼你就太容易知足了,autoresizing能夠知足大部分簡單的自動佈局需求,但是它有一個致命的缺陷,它只能設置子視圖相對於父視圖的變化,卻不能精確這個變化的度是多少,所以對於複雜的精準的佈局需求,它就力不從心了。可是有一個好消息告訴你,iOS6以後的autolayout自動佈局方案,正是解決複雜佈局的好幫手,咱們在下一遍博客中再進行詳細討論。

專一技術,熱愛生活,交流技術,也作朋友。

——琿少 QQ羣:203317592

相關文章
相關標籤/搜索