最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS9新特性之UIStackView

 更新時間:2017年09月25日 14:08:06   作者:路人Q  
UIStackView主要包括了四大屬性:axis、alignment、distribution、spacing。下面通過本文給大家介紹iOS9新特性之UIStackView的相關(guān)知識,感興趣的朋友一起看看吧

1. UIStackView相關(guān)屬性理解

UIStackView是iOS9之后推出的,我也是第一次接觸,在學(xué)習(xí)的過程中對于其中的相關(guān)屬性,尤其是對其中的distribution幾個屬性值,一知半解的,所以特寫此文通過代碼實(shí)例理解它們每個屬性的區(qū)別。

UIStackView主要包括了四大屬性:axis、alignment、distribution、spacing。

一、axis

主要設(shè)置UIStackView布局的方向:水平方向或垂直方向。

typedef NS_ENUM(NSInteger, UILayoutConstraintAxis) {
UILayoutConstraintAxisHorizontal = 0,//水平
UILayoutConstraintAxisVertical = 1//垂直
};

二、alignment

主要設(shè)置非軸方向子視圖的對齊方式。

typedef NS_ENUM(NSInteger, UIStackViewAlignment) {
UIStackViewAlignmentFill,//子視圖填充StackView
UIStackViewAlignmentLeading,//子視圖左對齊(axis為垂直方向而言)
UIStackViewAlignmentTop = UIStackViewAlignmentLeading,//子視圖頂部對齊(axis為水平方向而言)
UIStackViewAlignmentFirstBaseline, // 按照第一個子視圖的文字的第一行對齊,同時保證高度最大的子視圖底部對齊(只在axis為水平方向有效)
UIStackViewAlignmentCenter,//子視圖居中對齊
UIStackViewAlignmentTrailing,//子視圖右對齊(axis為垂直方向而言)
UIStackViewAlignmentBottom = UIStackViewAlignmentTrailing,//子視圖底部對齊(axis為水平方向而言)
UIStackViewAlignmentLastBaseline, // 按照最后一個子視圖的文字的最后一行對齊,同時保證高度最大的子視圖頂部對齊(只在axis為水平方向有效)
} NS_ENUM_AVAILABLE_IOS(9_0);

具體顯示效果如下:


fill
top
center
bottom
first base line

三、distribution

設(shè)置軸方向上子視圖的分布比例(如果axis是水平方向,也即設(shè)置子視圖的寬度,如果axis是垂直方向,則是設(shè)置子視圖的高度)。

typedef NS_ENUM(NSInteger, UIStackViewDistribution) {
UIStackViewDistributionFill = 0,
UIStackViewDistributionFillEqually,
UIStackViewDistributionFillProportionally,
UIStackViewDistributionEqualSpacing,
UIStackViewDistributionEqualCentering,
} NS_ENUM_AVAILABLE_IOS(9_0);

下面以axis=UILayoutConstraintAxisHorizontal,

alignment=UIStackViewAlignmentCenter為例:往UIStackView中添加三個UIView,第一個UIView設(shè)為40100,第二個UIView設(shè)為8080,第一個UIView設(shè)為120*60,通過實(shí)例來說明每個屬性的區(qū)別:

(1)UIStackViewDistributionFill = 0,默認(rèn)屬性,軸方向上填充UIStackView。如果axis為水平方向,則所有子視圖的寬度等于UIStackView的寬,所以如果只有一個子視圖,則子視圖的寬度就等于UIStackView的寬,如果有兩個子視圖,且優(yōu)先級一樣,則會拉伸或壓縮某個子視圖,使兩個子視圖的寬度之和等于UIStackView的寬……,如果axis是垂直方向,則所有子視圖的高度等于UIStackView的高,必要時會拉伸或壓縮某個子視圖。

上面是在子視圖優(yōu)先級一致的情況下,如果子視圖優(yōu)先級不一致,則會按優(yōu)先級從高到低設(shè)置子視圖的位置,對優(yōu)先級最低的子視圖進(jìn)行必要的拉伸或壓縮。

設(shè)置distribution=UIStackViewDistributionFill后顯示效果:

UIStackViewDistributionFill

如圖所示,由于三個子視圖的寬度之和不夠UIStackView的寬度,優(yōu)先級又一致,所以第三個子視圖被拉伸了。當(dāng)然,我們可以修改某個子視圖的優(yōu)先級來讓其被拉伸。

(2)UIStackViewDistributionFillEqually,該屬性設(shè)置后使所有子視圖在軸方向上等寬或等高。即如果是水平方向,所有子視圖都會被必要的拉伸或壓縮,使得每個子視圖的寬度一致,原來設(shè)置的子視圖的寬度都會被忽略;如果是垂直方向,所有子視圖的高度也會保持一致,如下所示:

UIStackViewDistributionFillEqually

(3)UIStackViewDistributionFillProportionally 該屬性設(shè)置后會根據(jù)原先子視圖的比例來拉伸或壓縮子視圖的寬或高,如實(shí)例中三個子視圖原先設(shè)置的寬度是1:2:3,所以水平方向上顯示時,會按照這個比例進(jìn)行拉伸,如下圖所示,拉伸后的寬度依然是1:2:3。

UIStackViewDistributionFillProportionally

(4)UIStackViewDistributionEqualSpacing 該屬性會保持子視圖的寬高,所有子視圖中間的間隔保持一致。如下圖所示,圖中子視圖的間隔(綠線所示的長度)都是一致的。


UIStackViewDistributionEqualSpacing

(5)UIStackViewDistributionEqualCentering 該屬性是控制所有子視圖的中心之間的距離保持一致,如下圖所示,子視圖中心點(diǎn)之間的間隔(綠線所示的長度)是一致的。

UIStackViewDistributionEqualCentering

四、spacing 該屬性控制子視圖之間的間隔大小,在distribution前三個屬性值設(shè)置的情況下,子視圖之間是沒有間隔,我們可以通過spacing屬性顯式的設(shè)置,如下圖在distribution=UIStackViewDistributionFillEqually情況下,設(shè)置子視圖間隔為10,子視圖之間間隔都為10,且子視圖依然等寬。

spacing=10

2.進(jìn)階

我們可以從Interface Builder右側(cè)的操作面板中,選擇UIStackView控件直接拖到XIB中。可以選擇Horizontal和Vertical兩個方向的UIStackView,也可以在拖到XIB中之后手動修改。

然后將兩個View拖到這個UIStackView中,父視圖也可以將UIStackView作為子視圖來進(jìn)行多層UIStackView嵌套,這也是蘋果推薦的做法。

打開右側(cè)設(shè)置面板來設(shè)置UIStackView的一些屬性,達(dá)到更好的布局效果。

除了上面的方法也可以在XIB中直接選擇多個View,然后點(diǎn)擊右下方的Stack按鈕,系統(tǒng)會自動推斷布局方式,幫我們自動布局子視圖,我們可以在系統(tǒng)布局之后在手動進(jìn)行調(diào)整。

代碼布局其實(shí)本質(zhì)上就是對數(shù)組進(jìn)行操作,數(shù)組中存儲的是UIStackView的子視圖。然后通過設(shè)置UIStackView的枚舉值屬性進(jìn)行頁面排布。代碼布局的方式這里就不演示了。。。😉

UIStackView和NSLayoutConstraint布局轉(zhuǎn)換

如果你之前的項(xiàng)目中已經(jīng)有約束,只需要將添加UIStackView管理UI控件約束清除。選中需要添加的UI控件,點(diǎn)擊右下方的Stack按鈕就可以。

總結(jié)

以上所述是小編給大家介紹的iOS9新特性之UIStackView,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Nib文件是什么?Nib文件打開方法

    Nib文件是什么?Nib文件打開方法

    這篇文章主要介紹了Nib文件是什么?Nib文件打開方法,nib文件是Cocoa App的界面資源,這種文件直接用xcode是不能被打開的,要修改后才能打開,本文就講解了修改方法,需要的朋友可以參考下
    2015-04-04
  • iOS10全新推送功能實(shí)現(xiàn)代碼

    iOS10全新推送功能實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了iOS10全新推送功能實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS逆向教程之logify跟蹤方法的調(diào)用

    iOS逆向教程之logify跟蹤方法的調(diào)用

    這篇文章主要給大家介紹了關(guān)于iOS逆向教程之logify跟蹤方法調(diào)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • ios觸屏事件指南

    ios觸屏事件指南

    這篇文章主要給大家總結(jié)介紹了2種實(shí)現(xiàn)ios觸屏事件的方法,簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-05-05
  • iOS延遲執(zhí)行方法詳解

    iOS延遲執(zhí)行方法詳解

    這篇文章主要為大家詳細(xì)介紹了iOS延遲執(zhí)行方法,包括performSelector(NSObject)方法、NSTimer、GCD和sleep(NSThread)四種方法,需要的朋友可以參考下
    2016-11-11
  • 詳解Objective C 中Block如何捕獲外部值

    詳解Objective C 中Block如何捕獲外部值

    這篇文章主要為大家介紹了詳解Objective C 中Block如何捕獲外部值實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • iOS獲取當(dāng)前時間和當(dāng)前時間戳的方法

    iOS獲取當(dāng)前時間和當(dāng)前時間戳的方法

    這篇文章主要介紹了iOS獲取當(dāng)前時間和當(dāng)前時間戳,獲取當(dāng)前時間戳有兩種方法以秒位單位的,下面通過本文給大家分享iOS獲取當(dāng)前時間和當(dāng)前時間戳的方法,一起看看吧
    2017-01-01
  • iOS中wkwebView內(nèi)存泄漏與循環(huán)引用問題詳解

    iOS中wkwebView內(nèi)存泄漏與循環(huán)引用問題詳解

    這篇文章主要給大家介紹了關(guān)于iOS中wkwebView內(nèi)存泄漏與循環(huán)引用問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • iOS 懶加載的使用實(shí)例代碼

    iOS 懶加載的使用實(shí)例代碼

    本篇文章主要介紹了iOS 懶加載的使用實(shí)例代碼,詳細(xì)的介紹了什么是懶加載和優(yōu)點(diǎn),及其實(shí)例。有興趣的可以了解一下
    2017-05-05
  • iOS 對象屬性詳細(xì)介紹

    iOS 對象屬性詳細(xì)介紹

    這篇文章主要介紹了iOS 對象屬性詳細(xì)介紹的相關(guān)資料,這里整理了IOS 對象的相關(guān)資料,需要的朋友可以參考下
    2016-11-11

最新評論

明溪县| 陕西省| 舟山市| 林州市| 福贡县| 丹寨县| 霍州市| 和硕县| 弥渡县| 仪征市| 洪洞县| 大冶市| 加查县| 怀集县| 鹰潭市| 马山县| 五原县| 当涂县| 江西省| 安化县| 义乌市| 泾阳县| 襄垣县| 遂川县| 海盐县| 万州区| 全南县| 新民市| 茶陵县| 普安县| 汕尾市| 始兴县| 浙江省| 蚌埠市| 内丘县| 婺源县| 前郭尔| 沅陵县| 若羌县| 皮山县| 灵丘县|