成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS 8 Size Classes 初探

移動開發 iOS
iOS8新特性,Size Classes,是對老式UI思路的全新抽象:把各個設備屏幕(iphone4,5,6, ipad,iwatch?)以及它們的屏幕旋轉狀態都抽象成屏幕Size的變化,將這些Size歸納成幾個類別。

iOS8新特性,Size Classes,是對老式UI思路的全新抽象:把各個設備屏幕(iphone4,5,6, ipad,iwatch?)以及它們的屏幕旋轉狀態都抽象成屏幕Size的變化,將這些Size歸納成幾個類別(Class)

寬(正常,任意, 緊湊),高(正常,任意, 緊湊)

3x3共9種Size,每種Size都可以設置特定的一套布局,如果不特殊指定,默認是在(寬任意,高任意)模式下設置,且其他8種布局繼承它。

聽過有人說,我們不用學autolayout了,直接學Size Class就一步到位了。這個說法是不對的,因為Size Class在將屏幕分類后,執行布局的還是Autolayout。

Size Classes與Interface Builder

當然不出所料的是,Xcode6中Interface Builder對Size Class有了很強大的支持:

啟用Size Class后,IB中就會出現Size Class切換的菜單

我們可以切換到wAny,hAny模式去編輯通用的控件和布局,也可以切換到某個特定Class,立刻可以預覽到變化,于是有個問題:

假如iPad和iPhone的布局有差異,老式寫法是分成ipad.storyboard和iphone.storyboard來分別寫,這本身就是個bug,因為大部分控件其實并沒差別,新Size Class解決這個問題了木?

答案是肯定的,Size Class的方案比老式的好了幾條街:

IB中某個View的出現與否,約束的出現與否以及約束的值都是可以根據Size Class單獨設置的,也就是說現在一個storyboard是9合1的。

比如下面有個Label,我只希望它出現在長寬緊縮的屏幕上時(腦補iwatch),這么勾選下就可以(出現或不出現被命名為”Installed”,這個選項可以從9個Size Class中多選)

Size Classes的xml文件改動

說到9合1的時候肯定會有疑問,這樣的storyboard文件會不會很大?源文件會不會很亂導致多人開發經常沖突?

答案是不會的,源于apple對Size Class在xml中的描述方法是針對變化配置的,什么意思呢?對比下storyboard的xml源文件就知道了:

wAny,hAny模式下剛才只有一個Label的頁面:

假如在wC,hC緊縮模式下設置不出現這個label時,在label的父view層級出現了下面的配置:

所以說ib中以附加的描述字段來表示哪些元素是被哪些Size Class包含或排除的,也正因為這樣的描述方式,使得新的xml格式可以被低版本兼容(低版本不解析這個字段,但其他字段正常解析)

Size Classes與xcassets

既然storyboard變成了9合1,配套的xcassets必須也有所表示才行,xcode6后向xcassets中添加圖片時增加了選擇對應Size Classes的菜單,展開后會像下面一樣:

通過符號表示確實不錯 -對應緊縮,*對應Any,+對應寬松

(@3x是iphone6 plus)

總結

總的來說,iOS對UI這塊的改動是跨時代性的,Autolayout的出現使得布局的復雜度減少到了View與View的關系上,再由根 View(也就是屏幕)指定frame,隨后所有子View相對布局,把frame的概念歸一化到根View的frame上;但有了Size Class后,根視圖的frame概念也被移除了,這下整個app的UI和frame這個單詞已然脫離關系,這也正是apple想要達到的目的。

Farewell,frame和那些還奮戰在手寫UI的iOS coder們…

責任編輯:閆佳明 來源: sunnyxx
相關推薦

2011-09-20 09:38:13

Windows 8安全模式

2013-11-20 14:56:40

iOS 7.1優化

2013-07-19 09:50:10

Java8API

2009-06-24 13:22:27

Glassfish

2010-06-03 12:57:06

Hadoop

2016-10-11 13:48:41

WebGLJavascriptWeb

2014-11-20 15:44:40

Apple Watch

2015-01-21 16:35:49

Apple WatchWatchKit

2012-02-29 15:03:30

2011-04-18 09:53:08

Ruby

2011-05-17 14:11:06

Dijkstra

2010-09-08 17:26:46

JavaScript

2017-05-29 08:18:11

Serverless架構軟件系統

2013-09-09 09:41:34

2011-09-14 14:15:25

IBMAIX 7操作系統

2011-06-16 10:25:29

AndroidAIR

2011-08-24 09:30:29

JavaJVM

2012-04-05 13:50:38

Java

2012-07-09 10:22:28

Mono for An

2013-04-10 11:23:27

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲天天干 | 亚洲国产91 | 午夜丰满寂寞少妇精品 | 日韩一区在线播放 | 国产精品一区在线观看 | 午夜影院在线免费观看视频 | 蜜桃视频在线观看免费视频网站www | 国产偷录视频叫床高潮对白 | 精品一区二区三区免费视频 | 久久久久国产精品午夜一区 | 欧美男人的天堂 | 精品国产一区二区久久 | 国产精品久久久久久久久久久久冷 | 欧美日韩中文字幕在线 | 一级黄片一级毛片 | 高清一区二区 | 日韩三区 | 永久免费在线观看 | 久久a久久 | 9999国产精品欧美久久久久久 | 国产精品美女久久久久aⅴ国产馆 | 美日韩精品 | 在线观看成人免费视频 | 亚洲国产成人一区二区 | 日韩欧美亚洲 | 久久这里只有精品首页 | 99精品一区二区三区 | 欧美久久一区二区 | 国产亚洲精品综合一区 | 亚洲免费网 | 99国产精品久久久久久久 | 噜噜噜噜狠狠狠7777视频 | 91免费版在线观看 | 91麻豆久久久 | 亚洲欧美日韩国产综合 | www.免费看片.com | 性色av一区| 亚洲一区二区三区欧美 | 欧美在线视频一区 | 99精品视频网 | 国产情侣一区 |