精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

iOS 9: UIStackView入門

移動開發 iOS
同iOS以往每個迭代一樣,iOS 9帶來了很多新特性。UIKit框架每個版本都在改變,而在iOS 9比較特別的是UIStackView,它將從根本上改變開發者在iOS上創建用戶界面的方式。本文將帶你學習怎樣使用UIStackView創建用戶界面。

[[138778]]

同iOS以往每個迭代一樣,iOS 9帶來了很多新特性。UIKit框架每個版本都在改變,而在iOS 9比較特別的是UIStackView,它將從根本上改變開發者在iOS上創建用戶界面的方式。本文將帶你學習怎樣使用UIStackView創建用戶界面。

 

 

本文假定你已經熟悉Auto Layout基礎。不熟悉的可以先看看Auto Layout教程。要理解Stack View為何如此有用及它是如何起作用的,需要首先對Auto Layout有深入了解。

 

1. 實例預覽

我們將使用UIStackView模擬一個app評分提示。用戶可以增加星星或者移除星星來打分。完成后看起來是這樣。

先從GitHub下載樣例工程并打開。在Main.Storyboard里有兩個Stack View

我們將使用這兩個Stack View來布局界面。開始編碼前,讓我們先看一下Stack View是如何工作的。

2. UIStackView 概述

Stack View的核心便是方便垂直或水平排布多個subview,如果你做過Android開發,那它和LinearLayout 控件非常相似。

Stack View最有用的就是它會自動為每個subview創建和添加Auto Layout constraints。當然你可以控制subview的大小和位置??梢酝ㄟ^選項配置subview的大小、排布以及彼此間的間距。

布局內容

打開Main.Storyboard,選擇其中一個Stack View可以查看其選項,并選中一個Stack View。在 Attributes Inspector中,注意Stack View下面列出的選擇。

Axis表示Stack View的subview是水平排布還是垂直排布。Alignment控制subview對齊方式。Distribution定義subview的分布方式。Spacing 為subview間的最小間距。

把術語簡化一下,你可這樣理解:Alignment 用于控制X 和 Y值,而Distribution 用于控制高度和寬度。另兩個值都會影響對齊。如果選中Baseline Relative將根據subview的基線調整垂直間距。如果選中Layout Margins Relative 將相對于標準邊界空白來調整subview位置。

另一個需要記住的是,Stack View會被當成Container View。所以它是一個不會被渲染的UIView子類。它不像其他UIView子類一樣,會被渲染到屏幕上。這也意味著設置其backgroundColor屬性或重載drawRect:方法都不會產生任何效果。

subView和arrangedSubView

開始使用Stack View前,我們先看一下它的屬性subViews和arrangedSubvies屬性的不同。如果你想添加一個subview給Stack View管理,你應該調用addArrangedSubview:或insertArrangedSubview:atIndex: arrangedSubviews數組是subviews屬性的子集。

要移除Stack View管理的subview,需要調用removeArrangedSubview:和removeFromSuperview。移除arrangedSubview只是確保Stack View不再管理其約束,而非從視圖層次結構中刪除,理解這一點非常重要。

現在我們對Stack View有一定了解,開始使用它。

3. 配置垂直布局的Stack View

打開Main.Storyboard選擇上面的Stack View。對Attributes Inspector作如下改變:

Alignment 設為 Center

Distribution 設為 Equal Spacing

Spacing 設為 30

這告訴Stack View為subview添加約束,使其垂直居中并沿Stack View的軸線對稱,然后為subview設置邊距30。

如果subview大小和Stack View內容區不相符,將根據compression resistance priorities對subview進行拉伸或壓縮。在運行時給Stack View添加subview也同樣會如此。

布局有任何歧義Stack View都會根據subview在arrangedSubviews中index一步步回退去調整subview的大小,直至其剛好適應Stack View的大小。

4. 給Stack View添加垂直布局的Subview

添加一個label,一個image view和一個button到上面的Stack View里。label在最上面,image view在中間,button在下面。添加完成后看起來是這樣:

接下來,我們要在Attributes Inspector里修改一下剛才添加的subview的屬性。把label的文本秘訣成“How do you likeour app?”, Text Alignment選擇Center 。image view的Image 輸入“logo”, Content Mode選Aspect Fit。最后把button的Text 設置成“Add Star!”。

運行app。能看到我們只做了很少工作,但已經添加了三個能響應方向、size class等改變的subview。事實上你并不需手動添加任何約束。

當app運行時,點擊Xcode窗口底部Debug View Hierarchy按鈕可以進行實時視圖調試

選擇先前添加的任意一個subview。查看size inspector,我們注意到Stack View已經自動為其添加了約束。下圖顯示的是為button添加的約束

5. 添加五角星

按鈕事件還沒和app界面關聯,我們先關聯起來。停止運行app,打開storyboard。創建一個名為addStar的IBAction 關聯到按鈕的Touch Up Inside事件。

addStar(_:)方法實現:

  1. @IBAction func addStar(sender: AnyObject) { 
  2. let starImgVw:UIImageView = UIImageView(image: UIImage(named: "star")) 
  3. self.horizontalStackView.addArrangedSubview(starImgVw) 
  4. UIView.animateWithDuration(0.25, animations: { 
  5. self.horizontalStackView.layoutIfNeeded() 
  6. }) 

給水平布局的Stack View里的星星image添加動畫。記住,由于Stack View自動為我們管理Auto Layout constraints,我們只能調用layoutIfNeeded來實現動畫。

編譯運行app,點擊add star按鈕。能看到最后結果卻不盡人意。

選擇下面的Stack View,查看Attributes Inspector會看到問題所在。由于Alignment 和Distribution 都設置成了Fill,Stack View 拉伸了星星以適應其大小。

這在添加更多的星星的時候會引起更多問題。我們希望星星居中顯示,而不是被拉伸來適應Stack View的寬度。

修改Alignment 的值為Center ,修改Distribution 的值為Fill Equally。最后在addStar(_:)方法中設置image view的內容。

  1. @IBAction func addStar(sender: AnyObject) { 
  2. let starImgVw:UIImageView = UIImageView(image: UIImage(named: "star")) 
  3. starImgVw.contentMode = .ScaleAspectFit 
  4. self.horizontalStackView.addArrangedSubview(starImgVw) 
  5. UIView.animateWithDuration(0.25, animations: { 
  6. self.horizontalStackView.layoutIfNeeded() 
  7. }) 

運行app,點幾次添加按鈕,我們發現所有星星居中了。

6. Stack View嵌套

不能刪除星星,我們的app評分什么用處不大。打開storyboard,添加一個水平布局的Stack View到上面的Stack View里。把它放置在logo之下,按鈕之上。

把“Add Star!”按鈕拖到新添加的Stack View里,再添加一個按鈕到新的Stack View里。改變按鈕的title為“Remove Star”,文本顏色設為red。預覽如下:

在Attributes Inspector中編輯新Stack View的屬性,改變如下:

Alignment 設為 Center

Distribution 設為 Equal Spacing

Spacing 設為 10

7. 刪除五角星

為“Remove Star”按鈕創建名為removeStar,事件類型為Touch Up Inside的IBAction響應方法。

removeAction(_:)實現:

  1. @IBAction func removeStar(sender: AnyObject) { 
  2. let star:UIView? = self.horizontalStackView.arrangedSubviews.last 
  3. if let aStar = star 
  4. self.horizontalStackView.removeArrangedSubview(aStar) 
  5. aStar.removeFromSuperview() 
  6. UIView.animateWithDuration(0.25, animations: { 
  7. self.horizontalStackView.layoutIfNeeded() 
  8. }) 

運行app,現在既可增加,也可刪除了。改變模擬器方向或者旋轉設備看看app會怎樣調整其界面。我們并未添加一行約束就構建好了app的用戶界面。

需要注意的是:removeStar(_:)里調用removeFromSuperview是把subview從視圖層級中移除。再次調用removeArrangedSubview(_:)只是告訴Stack View不再需要管理subview的約束。而subview會一直保持在視圖層級結構中直到調用removeFromSuperview把它移除。

結論

UIStackView類大大簡化了用戶界面開發。這是好事,特別是隨著硬件的改變。使用UIStackView,減少了開發者為簡單場景設置枯燥的約束,把繁雜的工作交給了UIKit。

【編輯推薦】

 

  1. 蘋果向開發者發布 iOS 9 第二個測試版
  2. iOS 9適配系列教程:后臺定位
  3. iOS 9 新增 UIStackView 官方文檔翻譯

 

【責任編輯:chenqingxiang TEL:(010)68476606】

責任編輯:chenqingxiang 來源: CocoaChina
相關推薦

2015-07-02 16:10:11

UIStackViewiOS 9

2015-08-20 09:19:46

ios9uistackview

2016-03-18 11:19:57

ios9replaykit入門

2015-07-14 16:15:22

2015-08-03 10:03:09

iosuistack vie

2015-09-23 10:30:44

iOS 9UIStack Vie

2015-07-14 17:17:21

IOS 9分屏

2015-07-14 17:21:19

IOS 9分屏

2015-09-28 11:23:09

iOS8iOS 9 開發

2022-09-26 08:25:56

監控平臺微服務

2011-05-16 14:52:19

DB2 9 Viper

2015-06-17 10:41:50

2015-07-16 12:59:19

IOS9UIDynamics

2015-10-16 14:27:29

iOS9collectionV特性

2015-07-13 16:56:40

IOS 9適配教程

2015-09-18 10:28:02

iOS 9 字體

2016-09-27 20:09:56

2013-09-13 13:16:05

2015-09-16 09:55:12

ios9學習UIKit Dynam

2015-02-10 11:21:36

iOS 9蘋果
點贊
收藏

51CTO技術棧公眾號

四虎国产精品永久在线国在线| 特黄视频在线观看| 99久久综合| 精品国产污污免费网站入口 | 欧美一级高清片在线观看| 日韩黄色短视频| 国产69久久| 国产91色综合久久免费分享| 国产精品69久久| 私库av在线播放| 精品99在线| 亚洲成avwww人| 小泽玛利亚视频在线观看| 欧美极品少妇videossex| 久久精品夜色噜噜亚洲a∨| 成人看片人aa| 国产天堂第一区| 最新日韩欧美| 久久99热精品| 黄色激情小视频| 亚洲免费成人av在线| 欧美一区二区三区系列电影| 日本888xxxx| 老司机深夜福利在线观看| 国产精品第四页| 欧美一区二区综合| 免费看国产片在线观看| 韩国欧美国产1区| 国产福利视频一区| 久久国产精品免费看| 欧美va天堂在线| 日韩中文在线中文网三级| 亚洲午夜久久久久久久久红桃| 日韩激情欧美| 91精品国产色综合久久ai换脸| 色婷婷综合久久久久中文字幕| 漫画在线观看av| 亚洲午夜久久久久久久久电影院 | 影音先锋在线一区| 久久中文久久字幕| 国产尤物在线播放| 欧美丰满日韩| 最新亚洲国产精品| 东方伊人免费在线观看| 亚洲精品国模| 亚洲久久久久久久久久久| 精品人妻一区二区免费| 日韩精品成人| 欧美变态凌虐bdsm| 国产精品日日摸夜夜爽| 色妞ww精品视频7777| 91精品国产综合久久精品| 手机免费看av网站| www一区二区三区| 日韩午夜av一区| 不卡的一区二区| jazzjazz国产精品久久| 精品福利在线导航| 免费的av网站| 台湾色综合娱乐中文网| 亚洲美女性视频| 中文字幕成人动漫| 成人影院在线| 免费97视频在线精品国自产拍| 久久国产精品国语对白| 亚洲最大av| 久久久免费在线观看| 日本熟伦人妇xxxx| 老司机一区二区三区| 国产激情综合五月久久| 最近国语视频在线观看免费播放| 青娱乐精品在线视频| 91精品视频在线| 亚洲奶汁xxxx哺乳期| av电影在线观看一区| 久久久福利视频| av片在线免费观看| 一级做a爱片久久| 国产精品va无码一区二区| 写真福利精品福利在线观看| 欧美年轻男男videosbes| 久久精品国产99久久99久久久| 亚洲一区二区免费在线观看| 亚洲国产精品va在线看黑人 | 日韩 国产 一区| 91嫩草精品| 亚洲色图色老头| 国产午夜精品理论片在线| 国产一区二区三区四区三区四| 97在线看福利| 在线观看免费高清视频| 国产成人综合在线播放| 欧美日韩国产综合视频在线| 三区四区电影在线观看| 亚洲高清一区二区三区| 国产精品视频分类| 成人福利免费在线观看| 中日韩午夜理伦电影免费 | 精品人妻互换一区二区三区| 日韩欧美大片| 91国产美女在线观看| 中文字幕理论片| yourporn久久国产精品| 一区二区日本伦理| 国产免费拔擦拔擦8x在线播放| 欧美日韩一级片网站| 亚洲麻豆一区二区三区| 97精品视频在线看| 欧美亚洲在线观看| 精品国产亚洲AV| 日本一区二区久久| 免费av观看网址| 国色天香久久精品国产一区| 亚洲欧美日韩精品久久亚洲区| 欧美成人aaa片一区国产精品| 日本网站在线观看一区二区三区 | 中文字幕12页| 国产一区二区三区探花| 国内精品小视频| 99久久国产免费| 国产精品网站导航| 国产91在线免费| 国产成人精品福利| 欧美插天视频在线播放| 中文在线资源天堂| 久久午夜电影网| 激情五月宗合网| www.豆豆成人网.com| 久久伊人色综合| 国产一区二区女内射| 国产亲近乱来精品视频 | 69精品久久久| 国产精品一区久久久久| 少妇熟女一区二区| 国产成人精品一区二区三区免费 | 亚洲不卡的av| 日本免费新一区视频| 蜜桃臀一区二区三区| 多野结衣av一区| 欧美刺激脚交jootjob| 午夜免费激情视频| 国产精品一二二区| 久久这里只有精品18| 亚洲国产高清在线观看| 欧美成人免费全部观看天天性色| 国产一区二区在线播放视频| 国产精品色哟哟网站| 日日干夜夜操s8| 久久五月天小说| 成人a视频在线观看| 午夜在线小视频| 在线观看91av| 欧美成人精品激情在线视频| 国产成人精品亚洲午夜麻豆| 蜜臀av性久久久久蜜臀av| 午夜视频一区二区在线观看| 欧美国产日韩一区| 日本免费网站在线观看| 午夜精品爽啪视频| 人人妻人人藻人人爽欧美一区| 麻豆91精品| 亚洲国产一区二区三区在线播 | 国产精品mm| 国产区一区二区三区| 涩涩涩在线视频| 亚洲色图狂野欧美| 国产精品无码一区二区桃花视频| 亚洲同性gay激情无套| 师生出轨h灌满了1v1| 999在线观看精品免费不卡网站| 久久艹中文字幕| 电影亚洲一区| 成年无码av片在线| 视频二区在线观看| 欧美怡红院视频| 国产高潮国产高潮久久久91| 成人性色生活片| 国内外免费激情视频| 国产精品久久久久久久久久10秀| 亚洲free嫩bbb| 成人观看网址| www.午夜精品| 天堂在线观看av| 在线免费观看日本一区| 日韩一区二区不卡视频| 成人激情黄色小说| 天天操,天天操| 亚洲高清成人| 无遮挡亚洲一区| av综合网站| 国产欧美日韩中文字幕在线| 中文字幕有码在线观看| 亚洲日韩第一页| 国产成人久久精品77777综合| 天天亚洲美女在线视频| av在线免费播放网址| 成av人片一区二区| theporn国产精品| 久久99伊人| 9色视频在线观看| 国产精品一线天粉嫩av| 91精品免费| 色猫猫成人app| 992tv成人免费视频| 蜜芽在线免费观看| 亚洲欧洲日产国码av系列天堂| 国产乱码久久久| 欧美在线一二三| 男女视频免费看| 一区二区在线观看免费| 中文天堂资源在线| 2020国产精品| 亚洲精品激情视频| 国产在线看一区| 性欧美极品xxxx欧美一区二区| 亚洲性感美女99在线| 中文字幕中文字幕在线中一区高清| 美女一区二区在线观看| 91手机在线播放| 91丨精品丨国产| 国产精品视频色| 欧美日韩123区| 91精品国产91久久久久久最新| 国产网友自拍视频导航网站在线观看| 亚洲欧美日韩精品久久亚洲区| 日本高清视频在线| 欧美成人bangbros| 国产女人高潮毛片| 在线不卡a资源高清| 中文字幕av片| 欧美在线观看一区二区| 日本视频免费观看| 色婷婷综合久久| 免费视频久久久| 色综合天天综合| 国产成人免费看| 欧美午夜视频一区二区| 日韩精品一区二区av| 亚洲成a人片在线不卡一二三区| 久久艹精品视频| 亚洲午夜免费视频| 国产精久久久久久| 午夜精品久久久久| 国产成人在线观看网站| 婷婷综合五月天| 国产精品美女久久久久av爽| 精品日本高清在线播放| 你懂的国产视频| 日本乱码高清不卡字幕| 欧美一区二区三区不卡视频| 一本高清dvd不卡在线观看| 一区二区三区福利视频| 一本色道综合亚洲| 天天综合久久综合| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 伊人五月天婷婷| 国产成人综合在线播放| 日本性生活一级片| 久久蜜臀精品av| 综合 欧美 亚洲日本| 亚洲视频在线观看一区| 欧美精品久久久久性色| 亚洲h精品动漫在线观看| 五月婷婷开心网| 在线免费观看日本一区| 国产精品伦理一区| 欧美videofree性高清杂交| 色哟哟中文字幕| 国产亚洲精品久久久久久牛牛| 最新97超碰在线| 欧美激情中文网| 色8久久影院午夜场| 成人黄色免费网站在线观看| 午夜久久av| 日本一区二区三不卡| 亚洲精品成人无限看| 日本中文字幕亚洲| 奇米色一区二区| 四虎永久免费观看| 久久精品网站免费观看| 免费高清在线观看电视| 午夜电影一区二区| 亚洲一级黄色大片| 精品国产一区二区精华| av在线女优影院| 欧美激情视频网址| 成人亚洲视频| 国产三区二区一区久久| 黑人操亚洲人| 草草视频在线免费观看| 日本网站在线观看一区二区三区| 久久久久无码精品| 国产无遮挡一区二区三区毛片日本| 黄色精品视频在线观看| 午夜av一区二区三区| 国产又粗又猛视频| 日韩精品视频在线观看免费| 日本高清中文字幕在线| 777午夜精品福利在线观看| 亚洲精品tv| 欧美一区二区视频在线| 亚洲黄色大片| а 天堂 在线| 久久久蜜桃精品| 久久久久久久久久99| 欧美探花视频资源| 欧美在线一卡| 欧美丰满少妇xxxxx| 欧美成人家庭影院| 欧美精品二区三区四区免费看视频| 亚洲一区色图| 欧美日韩一区二区三区69堂| 26uuu亚洲综合色欧美 | 色国产综合视频| 丁香六月色婷婷| 久久亚洲精品视频| 国产精品99久久久久久董美香| 精品不卡一区二区三区| 欧美福利网址| 亚洲理论中文字幕| 国产精品国产三级国产专播品爱网 | 日韩黄色影片| 久久久免费在线观看| 久久久久久久久成人| 中文字幕剧情在线观看一区| 日韩精品亚洲一区| 国产全是老熟女太爽了| 午夜精品影院在线观看| 亚洲欧美激情另类| 欧美激情亚洲激情| 亚洲精选av| 波多野结衣与黑人| 国产精品66部| 黄视频网站免费看| 欧美一区二区在线播放| 免费网站成人| 亚洲a级在线观看| 亚洲综合激情在线| 原创真实夫妻啪啪av| 亚洲男人都懂的| 国产成人精品一区二区无码呦| 欧美成人精品一区| 日韩激情精品| av无码久久久久久不卡网站| 粉嫩绯色av一区二区在线观看| 清纯粉嫩极品夜夜嗨av| 欧美大片国产精品| www欧美xxxx| 精品一区在线播放| 久久精品一本| 成人无码av片在线观看| 在线观看三级视频欧美| 伊人在线视频| 91精品在线播放| 激情六月综合| 精品国产av色一区二区深夜久久| 精品日本高清在线播放| 欧美精品少妇| 国产精品视频永久免费播放 | 91蝌蚪国产九色| 狠狠人妻久久久久久| 国产一区二区日韩| 亚洲香蕉久久| 国产天堂视频在线观看| www久久久久| 亚洲熟女乱色一区二区三区久久久| 精品国产一区二区三区久久狼黑人 | 日韩人体视频一二区| 国产高清一区在线观看| 91免费视频网站| av成人天堂| 亚洲精品国产精品国自| 欧美一级在线免费| 蜜桃视频在线观看播放| 天堂精品一区二区三区| 国精产品一区一区三区mba视频| 久久免费黄色网址| 在线电影av不卡网址| 久久精品免视看国产成人| 欧美日韩亚洲一| 中文字幕日韩av资源站| 蜜桃久久一区二区三区| 国产精品久久久久久久久久久新郎| 亚洲成人精品| a毛片毛片av永久免费| 欧美人牲a欧美精品| rebdb初裸写真在线观看| 亚洲 国产 日韩 综合一区| 成人午夜激情影院| 又污又黄的网站| 久久久欧美一区二区| 日韩精品一区二区久久| 中文字幕一区二区三区乱码不卡| 欧美影片第一页| 天堂电影一区| xxxxxx在线观看| 国产免费观看久久| 四季av日韩精品一区| 91在线直播亚洲| 免费观看成人鲁鲁鲁鲁鲁视频|