iOS基礎(chǔ)(二) - autoresizing使用心得

前言:
autoresizing是iOS在autoLayout出現(xiàn)之前的界面自動(dòng)化布局方式,但是,由于該方法的局限性,只能用于子控件適應(yīng)父控件的布局改變,所以,蘋果官方后面出了autoLayout,一種能適應(yīng)更復(fù)雜場(chǎng)景的自動(dòng)化布局方式。

1.簡(jiǎn)單的使用

\\子控件相對(duì)于父控件右邊的間距不變
UIView *testView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 120, 80)];
testView.backgroundColor = [UIColor orangeColor];

UIView *otherView = [[UIView alloc] initWithFrame: CGRectMake(5, 5, 40, 40)];
otherView.backgroundColor = [UIColor blueColor];
otherView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;  //左邊間距可變,那么默認(rèn)其它間距不變,比如頂部間距,底部間距和右邊間距,寬高等等

[testView addSubview: otherView];
[self.view addSubview: testView];

//改變父控件的frame
testView.frame = CGRectMake(0, 0, 200, 120);

效果圖:


autoMaskLeft.gif

上面的動(dòng)圖除了左邊間距改變了,底部間距也改變了,因?yàn)檫@里涉及到兩個(gè)間距,一個(gè)就是底部間距,還有一個(gè)就是控件本身的高度,很明顯高度不變的優(yōu)先級(jí)比底部間距不變的優(yōu)先級(jí)高,所以,底部間距改變了,而高度不變。

2.view的autoresizingMask屬性

typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
    UIViewAutoresizingNone                 = 0,          //默認(rèn)選項(xiàng),效果就是頂部和左邊距離父控件不變,并且寬高也不變
    UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,     //與父控件右邊間距不可變,左邊可變
    UIViewAutoresizingFlexibleWidth        = 1 << 1,     //視圖寬度可變
    UIViewAutoresizingFlexibleRightMargin  = 1 << 2,     //與父控件左邊間距不可變,右邊可變
    UIViewAutoresizingFlexibleTopMargin    = 1 << 3,     //與父控件底部間距不可變,頂部可變
    UIViewAutoresizingFlexibleHeight       = 1 << 4,     //視圖高度可變
    UIViewAutoresizingFlexibleBottomMargin = 1 << 5      //與父控件頂部間距不可變,底部可變
};
//注:由于是options,所以可以多選,用"|"符隔開就行

3.羅列出基本選項(xiàng)的效果以及一些組合選項(xiàng)的效果
(1)右邊間距可變

otherView.autoresizingMask = UIViewAutoresizingFlexibleRightMargin;
autoMaskRight.gif

(2)頂部間距可變

otherView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
autoMaskTop.gif

(3)底部間距可變

otherView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin;
autoMaskBottom.gif

(4)左邊和右邊的間距可變

otherView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
autoMaskLToR.gif

(5)寬度可變

otherView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
autoMaskWidth.gif

(6)高度可變

otherView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
autoMaskHeight.gif

(7)高度和寬度可變

otherView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
autoMaskWAndH.gif

(8)左邊間距和高度可變

otherView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight;
autoMaskLAndH.gif

(9)左邊間距和寬度可變

otherView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth;
autoMaskLAndW.gif

注:還可以三個(gè)屬性以及更多屬性組合,可以自己嘗試一下各種組合效果如何,這里不做過多說明。

4.總結(jié)
在最后點(diǎn)個(gè)題,使用autoresizing來自動(dòng)化布局局限性還是很明顯的,從蘋果只給出了一個(gè)可選的屬性就可以知道,變化空間不大。所以,如果想要更復(fù)雜的效果,還是選擇autoLayout,無(wú)論原生的還是第三方庫(kù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 iPhone自誕生以來,隨著其屏幕尺寸不斷的多樣化,屏幕適配的技術(shù)一直在發(fā)展更新。目前,iOS系統(tǒng)版本已經(jīng)更...
    VV木公子閱讀 15,641評(píng)論 24 170
  • 1.尺寸適配1.原因 iOS7中所有導(dǎo)航欄都為半透明,導(dǎo)航欄(height=44)和狀態(tài)欄(height=20)不...
    LZM輪回閱讀 6,392評(píng)論 1 4
  • 適配 什么是適配? 適應(yīng)、兼容各種不同的情況 移動(dòng)開發(fā)中,適配的常見種類 系統(tǒng)適配 針對(duì)不同版本的操作系統(tǒng)進(jìn)行適配...
    JonesCxy閱讀 967評(píng)論 1 6
  • 屏幕適配 本章節(jié)主要還是說明如何讓應(yīng)用程序能夠適配在蘋果不同的屏幕和如何讓應(yīng)用中的內(nèi)容在不同的屏幕下能夠正常的放置...
    AlanGe閱讀 833評(píng)論 0 2
  • 偏安一隅,方覺陋室浩渺,宇宙可笑;坐井觀天方,與天地幽窄,穹蒼如鑿。才疏學(xué)淺,故嘲以夢(mèng)為馬目光長(zhǎng)遠(yuǎn)者弩鈍無(wú)智。 我...
    清語(yǔ)宛如閱讀 571評(píng)論 0 0

友情鏈接更多精彩內(nèi)容