欧美黑人激情性久久,一本色道久久综合无码人妻,欧美另类人妻制服丝袜,日韩精品一卡2卡3卡4卡新区乱码,欧洲熟妇性色黄在线观看免费,97夜夜澡人人爽人人喊中国片,77se77亚洲欧美在线,久久精品一区二区免费播放

                    一稿適配所有iOS設備(三)

                    按照計劃,這篇文章將是這個系列里的最后一篇了。 在上一篇文章中,為了讓最后的三個第三方登錄按鈕的間距能夠根據屏幕的寬度自動調整,我先添加了一個組,再在組里面添加約束

                    一稿適配所有iOS設備(三)

                    按照計劃,這篇文章將是這個系列里的最后一篇了。

                    在上一篇文章中,為了讓最后的三個第三方登錄按鈕的間距能夠根據屏幕的寬度自動調整,我先添加了一個組,再在組里面添加約束,弄的很復雜,而且這種方法也有一定的局限性。

                    一稿適配所有iOS設備(三)

                    我在上篇文章了就講過,這個問題有更簡單的解決方案。這個東西叫做StackView,在我之前講過的添加約束的方式中,第一個按鈕就是。

                    一稿適配所有iOS設備(三)

                    它可以讓你不用添加約束就能使用Autolayout里的很多功能,以后維護起來也會更方便。和上篇文章講的一樣,先拖出三個按鈕放好,這次不用給他們先放到一個組里,只要三個一起選中后,點擊上面說過的Stack按鈕,就將他們放進了一個StackView里了,你可以理解為對它們進行了編組。?

                    一稿適配所有iOS設備(三)

                    編組后發現三個按鈕變成垂直排列的同學先不要急,后面我會講到如何把它們變成水平分布的。這樣我們就將它們都放到了一個組里了,接下來先給這個組添加約束,和之前用的方法一樣。組的寬度還是設置為屏幕寬度的0.6倍。添加完成后變成這樣了。

                    一稿適配所有iOS設備(三)

                    但是里面的按鈕并沒有和我們想象的一樣平均分布,在上篇文章中,我們添加了很多約束,將這些按鈕固定在了組里的某些特定的位置。你也可以在StackView里面添加約束,但是這里我們完全沒必要這么做。我們只要選中整個StackView,就能在右邊欄看到它的屬性了。只要修改一個選項就能達到我們要求的效果。

                    一稿適配所有iOS設備(三)

                    下面我就解釋一下這些選項代表的是什么意思。

                    第一個:?Aixs?定義的是這個組的分布方向,我們三個按鈕是水平分布的,所以這里不需要修改,如果你編組后他們是垂直分布的,只需要在這里將它們改成Horizontal就行了。

                    第二個 :Alignment??定義的是組內元素的對齊方式,你可以在這里設置上對齊,下對齊之類的,因為這三個按鈕大小是一樣的,所以對齊方式也無所謂了,使用默認的就行。

                    第三個:Distribution?定義的是他們的分布方式,我們只要在這里選擇equal spaceing 就能讓他們平均分布了。

                    第四個 :?Spaceing?是用來定義相鄰元素之間的距離的,你可以在后面的輸入框中輸入你想要的數值。

                    修改好了Distribution后,我們的工作就完成了。

                    一稿適配所有iOS設備(三)

                    StackView的威力不限于此,假設現在產品經理屁顛屁顛地跑來和你說,我們又多了一個第三方登錄的渠道,需要加上去。如果你使用的是我在上篇文章中的做法,那么現在你必須從頭來過,而且那種將三個按鈕放在最左,中間,最右的做法也完全失效了,必須得想出新的辦法來。

                    而如果你使用的是StackView,那這個問題完全不叫什么問題,你只要從控件庫里面拖出一個新的按鈕,直接扔到這個StackView里面就行了,其他的東西都是自動幫你搞定的。

                    一稿適配所有iOS設備(三)

                    再講一個StackView的實際應用,假設我們設計了這樣一個頁面,想象一下,如果你一個個的去添加約束的話,會是一件多么麻煩的事情,而當需要在中間在插進一行新的內容的時候,那會讓你更加痛苦。

                    一稿適配所有iOS設備(三)

                    而如果你使用的是StackView的話,這一切都變的非常簡單。首先你將左邊的一整列都放進一個StackView里面,這時候的Aixs應該是Vertical,在Alignment里將對齊方式改為Trailing(尾對齊),然后Spaceing里面調整一下行間距就可以了。

                    用同樣的方式將右邊的文字也都放進一個StackView里面,Alignment里設置Leading(首對齊),將Spaceing里的數字調整到和左邊的一樣。

                    最后將左右兩個StackView再放進一個StackView里面,根據需要在Spaceing 里面調整它們之間的距離。將這個總的StackView放到你想要的位置就完成了。要添加新的一行,只需要將它們拖進之前設置好的StackView里就可以了。

                    StackView背后使用的也是AutoLayout,所以你還可以在StackView里面添加約束,做出更復雜的頁面布局。

                    事實上蘋果建議你將StackView作為一個最基礎的元素來構建你的整個頁面,因為它實在是太方便了。

                    約束的優先級 Constraint Priorities

                    我在之前講過,只有當能從你給的約束關系中推斷出位置和大小信息,而且還沒有沖突時,才能通過。

                    在現實開發中,有可能會出現約束之間沖突的情況,這時候我們該如何處理呢?實際上不是所有的約束都是必須滿足的。還記得我在上篇文章中講過的雙擊修改約束嗎?雙擊約束線后會彈出這樣一個Popup,其中第二行的Priority 就是這個約束的優先級。

                    一稿適配所有iOS設備(三)

                    你可以給約束設定一個優先級,從0到1000,默認約束的優先級為1000,也就是說是必須滿足的。但如果你將優先級調整到0到999之間,那就意味著這個約束并不是必須滿足的,而是根據實際情況來取舍。當出現沖突時,AutoLayout會根據Priority數值的大小來選擇優先滿足哪些約束,數值越高,就越優先滿足。

                    可是我們不該在一開始就避免去設置有沖突的約束么?如果我們一開始就去避免這個問題,那優先級還有什么用?

                    下面我講一個例子來演示一下約束優先級的實際應用。

                    假設我們在做一個軟件,在這個軟件里我們給出了兩種基本的操作:打賞 和 支持。

                    規則是這樣的:打賞就是你給這個作者一定的虛擬幣,每個用戶可以進行無限次數的打賞。

                    支持,則更多的是精神上的自持,每個用戶對于某個特定的觀點只能支持一次。

                    通過以上的描述我們可以設計這樣兩個按鈕:

                    一稿適配所有iOS設備(三)

                    因為支持按鈕只有一次點擊機會,所以當支持按鈕點擊過后它就變成不可點擊狀態,它的使命也就完成了。?

                    一稿適配所有iOS設備(三)

                    但是,既然“支持”這個按鈕點過以后就失效了,為什么不將它拿掉不顯示呢。可是如果去掉支持按鈕,那么和支持按鈕相關的約束都沒有了,打賞按鈕的寬度是沒有被定義的。該如何來解決這個問題呢?

                    答案就是再創建一個約束,將打賞的尾部和屏幕最右邊的距離設置為10 。這樣打賞按鈕的尾部有了兩個約束了,一個說我要和支持按鈕保持10的距離,一個說我要和屏幕的右邊保持10的距離,顯然這兩個約束是沖突的。解決這個沖突的辦法就是將新加的約束的優先級降低。在下圖我用虛線表示。?

                    一稿適配所有iOS設備(三)

                    這樣初始狀態時,因為第二個約束并不是必須滿足的,所以一開始是被舍棄的。但是當支持按鈕被移除后,這個新加的按鈕正好能派上用處。這樣頁面就變成了這樣:

                    一稿適配所有iOS設備(三)

                    約束不一定是固定值

                    前面我講的約束都是一個固定的數值,但實際上著并不是必須要這樣的。你可以設置他們之間的關系,大于等于某個值,等于某個值,小于等于某個值。再看一下修改約束的Popup,第一個選項就是讓你選擇這個關系,只不過默認的是等于。

                    一稿適配所有iOS設備(三)

                    下面再看一個實際情況。

                    一稿適配所有iOS設備(三)

                    假如我有這樣一行內容,前面是描述,后面是內容,我們規定了它們各自離開屏幕兩個邊的距離。但是我們并不是十分關心它們之間的距離,所以我們可以不設置它們之間的約束,讓他們根據顯示的內容自動調整好了。然而,當后面這個交易編號變的特別長的時候,就會出現文字疊加的情況。所以為了保證它們不重疊,我們還是需要在他們之間設置一個約束,如規定它們的距離必須大于等于10。這樣大多數情況下能保證這兩個label還是能自由伸縮,而且不會出現重疊的情況。當編號變的特別長時可以觸發新的適配機制,如讓編號的字體縮小,而不是直接重疊到前面的標題上去。

                    一稿適配所有iOS設備(三)

                    Auotresizing

                    不得不承認的是,有時候設置約束是一件很麻煩的事情,特別是你面對的是復雜的界面的時候,而有時候,你還沒想好要設置成怎么樣,只是想先試試。這時候你就可以試試蘋果推出的新功能,前提是你要把你的Xcode 升級到8.0以上。

                    這個功能就是Auotresizing,它讓你不設置約束就能快速驗證你的想法。它使用起來也非常簡單,在選中你要設置的視圖的前提下,當你選擇左邊欄中的標尺icon 后就能看到Auotresizing功能了。

                    一稿適配所有iOS設備(三)

                    能看到中間的正方形四周有四個約束,虛線狀態下表示這個約束沒有添加,當你點一下后,它就會變成實線,表示已經添加上了,而中間的兩個帶有箭頭的虛線則代表是否允許伸縮。默認是不允許的,如果你點擊寬度方向的以后,這條線就變成了實線,表示寬度方向是可以自由伸縮的。邊上還會有一個小動畫來告訴你這些視圖會怎么變。有興趣的可以去嘗試一下。

                    到這里,這個系列的文章就算結束了。當然我這個系列的文章里不可能提到所有和AutoLayout的知識。很多人看完以后可能也就忘了如何去添加約束,但是我覺我寫這個系列的文章,最大的目的不是讓你看完以后能像程序員一樣去開發自己設計的頁面了,而是讓你了解這種相對布局的思想。希望看完這一系列文章后,當你再次看設計稿時,能有一種新的視角。

                    Via: DDC

                    給TA打賞
                    共{{data.count}}人
                    人已打賞
                    網頁理論

                    如何表達App的隱藏手勢操作

                    2017-1-23 17:24:11

                    網頁理論

                    網頁布局大解放,2017年十大網頁設計趨勢

                    2017-2-28 6:28:04

                    ?
                    個人中心
                    購物車
                    優惠劵
                    有新私信 私信列表
                    搜索
                    主站蜘蛛池模板: 国产精品无码av在线播放| 国产成人亚洲无码淙合青草| 亚洲永久精品ww47| 国产欧美亚洲精品a第一页| 欧美精品一区二区在线观看播放| 国产一区二区精品久久岳| 影音先锋人妻av中文字幕久久| 国产毛1卡2卡3卡4卡免费观看| 毛片无遮挡高清免费| 国产女人高潮抽搐喷水视频| 亚洲aⅴ综合av国产八av| 青青草原亚洲| 亚洲综合区图片小说区| 欧美丰满熟妇乱XXXXX网站| 最新偷拍一区二区三区| 亚洲va久久久噜噜噜久久狠狠| 日韩人妻潮喷中文在线视频| 久章草这里只有精品| 亚洲精品毛片一区二区三区| 无码午夜福利免费区久久| 亚洲综合一区二区三区视频| 苍井空浴缸大战猛男120分钟| 国产一区精选播放022| 亚洲春色在线视频| 亚洲精品无码永久中文字幕| 国内少妇高潮嗷嗷叫在线播放| 自拍日韩亚洲一区在线| 嫩草成人AV影院在线观看 | 男人激烈吮乳吃奶视频免费| 国产av精品一区二区三区| 亚洲无线一二三四区手机| 中日产幕无线码一区| 少妇厨房愉情理9仑片视频| 灭火宝贝高清完整版在线观看 | 国产精品自在自线免费观看| 熟女人妻少妇精品视频| 亚洲综合一区自偷自拍| 国产999久久高清免费观看| 国产精品夜间视频香蕉| 久久天天躁狠狠躁夜夜躁app| 欧美精品亚洲精品日韩专 |