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

                    一稿適配所有iOS設(shè)備(二)

                    上一篇講了一大堆基礎(chǔ)知識,現(xiàn)在就開始講一下AutoLayout的實際應(yīng)用。接下來我們要用Xcode做一個典型的登錄頁面。這個頁面會用到我在上一篇里講過的三種布局方式。完成以后是一個真
                    一稿適配所有iOS設(shè)備(二)

                    ?

                    上一篇講了一大堆基礎(chǔ)知識,現(xiàn)在就開始講一下AutoLayout的實際應(yīng)用。接下來我們要用Xcode做一個典型的登錄頁面。這個頁面會用到我在上一篇里講過的三種布局方式。完成以后是一個真實的登錄界面,換句話說,這是一個真實的iOS App,只是這個App只有一個不能登錄的登錄界面。

                    看完這篇文章后你會大概了解你的設(shè)計是如何實現(xiàn)的,并且能自己制作出簡單的頁面來。順便聲明一下,本文的討論范圍僅限于iOS開發(fā),并且只討論AutoLayout的布局方式,想了解更多布局的基礎(chǔ)知識的可以看我上一篇文章,未做特殊說明的不帶單位的尺寸默認單位都為point。
                    ?

                    下面正式開始,這個就是我們要做的登錄界面。

                    一稿適配所有iOS設(shè)備(二)

                    首先你需要有一個Mac電腦,并且要安裝了Xcode,你可以直接在Mac App Store 里下載,這是免費的。Xcode 是蘋果給開發(fā)者提供的開發(fā)軟件,我們平時用的iOS App 就是這里開發(fā)出來的,事實上幾乎所有蘋果設(shè)備上的軟件都是用Xcode開發(fā)的,包括Mac ,Apple Watch上的軟件。Xcode是一個強大的開發(fā)工具,有很多功能,我在這里只是大致介紹一下本文需要用到的功能,更多內(nèi)容可以點擊這里:http://help.apple.com/xcode/mac/8.0/

                    創(chuàng)建你的第一個Xcode項目

                    安裝好后打開Xcode 創(chuàng)建你的第一個項目吧。

                    一稿適配所有iOS設(shè)備(二)

                    打開后選擇 Create a new Xcode project? —> 出現(xiàn)默認選中的Single View Application,直接點next —>? 給你的App取個名字,點擊next? —>? 選擇保存地址 就可以了。這就是打開后你看到的界面?:

                    一稿適配所有iOS設(shè)備(二)

                    用過Sketch的人可能會比較熟悉上面這個界面的結(jié)構(gòu)。
                    ?

                    首先看左邊欄,這個可以理解為導(dǎo)航欄,在這里我們可以選擇打開不同的文件。本文中我們需要用到的是兩個,一個是Main.storyboard ,這個是讓我們來布局界面的畫布,還有一個是Assets.xcassets ,這個是讓我們放素材的地方,我們可以把切圖導(dǎo)入到這里,供后續(xù)使用。

                    一稿適配所有iOS設(shè)備(二)

                    右邊欄大概可以理解為屬性欄,里面的內(nèi)容會根據(jù)你選中的東西不同而變化,顯示出相應(yīng)的內(nèi)容。
                    ?

                    首先我們要導(dǎo)出需要的素材。我導(dǎo)出的是@1x ,@2x,@3x 三種倍率的,如果你的命名符合規(guī)范的話(后綴為@1x ,@2x,@3x),Xcode能自動識別倍率。我們也可以導(dǎo)入一張PDF,Xcode會自己生成不同倍率的圖(具體做法在這里不說了,有興趣的可以自己研究下)。

                    一稿適配所有iOS設(shè)備(二)

                    需要說明一下的是我的登錄按鈕切圖并不是一個長的按鈕,而只截了一段,因為這個按鈕長度會根據(jù)屏幕寬度調(diào)整,而不是固定的,接下來我們會在Xcode里處理一下,讓這個切圖在寬度方向能自由伸縮,但又不讓圖片失真變形。

                    導(dǎo)入切圖

                    先選中Assets.xcassets , 將我們導(dǎo)出的切圖拖到里面。

                    一稿適配所有iOS設(shè)備(二)

                    如果你的命名是符合規(guī)范的,那么Xcode已經(jīng)將你的切圖自動識別到對應(yīng)的倍率框里面去了

                    一稿適配所有iOS設(shè)備(二)

                    然后我們處理一下之前說的那個登陸按鈕。選擇頂部的菜單中的Editor —> Show Slicing

                    一稿適配所有iOS設(shè)備(二)

                    這時候你會發(fā)現(xiàn)你的切圖預(yù)覽變成這樣了:

                    一稿適配所有iOS設(shè)備(二)

                    點擊Start Slicing 接著再點擊 Slice Horizontally 的圖標既可以了。想了解細節(jié)的可以看這里:https://developer.apple.com/library/ios/recipes/xcode_help-image_catalog-1.0/chapters/SlicinganImage.html

                    一稿適配所有iOS設(shè)備(二)

                    Tips:有些由簡單色塊組成的圖片,如背景,按鈕背景等切圖并不需要切出一張完整的圖片。
                    ?

                    開始布局

                    處理完素材以后我們就可以正式開始了。在導(dǎo)航欄里選擇Main.storyboard,你會看到頁面的中間出現(xiàn)了一個叫View Controller正方形的畫布。

                    一稿適配所有iOS設(shè)備(二)

                    看一下登錄界面的頁面構(gòu)成,我用紅字標的是我們等下需要用到的控件,我們可以在iOS的控件庫里面找到這些控件,直接將它們拖到我們的畫布上去。
                    ?

                    最上面是一個Navigation Bar? 這是iOS系統(tǒng)的自帶的,并不需要我們自己來做,我們只需要把Navigation Bar調(diào)出來就行了。

                    一稿適配所有iOS設(shè)備(二)

                    調(diào)出Navigation bar

                    首先我們先選中View Controller,選擇頂部菜單欄中的Editor中的Embed in Navigation Controller ,這樣我們的View Controller上就會出現(xiàn)Navigation Bar 了。

                    一稿適配所有iOS設(shè)備(二)

                    一稿適配所有iOS設(shè)備(二)

                    這時候我們能看到之前的View Controller 上已經(jīng)出現(xiàn)了一個Navigation bar ,雙擊中間就能直接輸入標題,字體大小都是默認的,一般都是使用默認字號。
                    ?

                    接下來就要放Navgation Bar 上的兩個按鈕了,同樣,這兩個也是使用系統(tǒng)默認的按鈕,位置和大小都是默認的,我們只需要從系統(tǒng)的控件庫里拖兩個按鈕放上去就行了。Xcode右下角區(qū)域的就是iOS的控件庫,我們平時用的控件都能在這里找到,你也可以在下面的搜索框中直接輸入你想要的控件進行快速查找。這里我們需要的是 Bar Button Item ,找到后直接拖出來放到我們的Navigation Bar 上就行了。
                    ?

                    放上去以后同樣是雙擊就可以直接輸入,我們改好按鈕的標題,這時候發(fā)現(xiàn)默認的按鈕是藍色的,我們設(shè)計中的按鈕是綠色的。iOS的系統(tǒng)控件都會給我們提供一部分自定義的空間,我們只需要選中相應(yīng)控件,就會在右邊欄的Attributes inspector上出現(xiàn)相應(yīng)控件的屬性,可以看到右邊欄中出現(xiàn)了一個 Tint 的屬性,我們可以在這里修改顏色。
                    ?

                    Tips:建議大家去看一下這個控件庫里面的東西,了解各個控件的用處和它們的屬性,這會對你的設(shè)計有很大的幫助。

                    一稿適配所有iOS設(shè)備(二)

                    修改背景色

                    我們可以直接點擊相應(yīng)控件來選擇,也可以在畫布邊上的層級里選擇,這里能看到所有的控件,如果我們點擊View Controller中間的空白位置,就能看到有一個View被選中了,這是系統(tǒng)默認加上去的,可以把它理解為背景。選中這個View 后我們就能在右側(cè)的屬性欄中修改它的背景顏色了。我們需要把它的 Background 改為灰色就行。

                    一稿適配所有iOS設(shè)備(二)

                    給出適配策略

                    這些都改好以后,接下來就是用AutoLayout 布局的時候了,先分析一下我們要做的頁面的布局:

                    一稿適配所有iOS設(shè)備(二)

                    第一個是最上面的Logo ,這是一張圖片,我希望它一直保持圖片的原始大小,不隨著屏幕縮放,防止圖片變虛。所以我希望它的大小是固定的,寬度方向?qū)?yīng)上個例里的B。
                    ?

                    第二個是輸入框和按鈕區(qū)域,我希望他們的寬度能和屏幕一起縮放,所以寬度方向?qū)?yīng)A。
                    ?

                    第三個是三個第三方登錄的按鈕,我要求他們之間的間隙能隨著屏幕的變化而變化,充分利用屏幕空間,也就是寬度方向?qū)?yīng)C。

                    定位圖片

                    首先從控件庫里面拖出一個Image View 到畫布上去,在左側(cè)的Attributes inspector 上的Image選框中選擇我們之前導(dǎo)入的logo

                    一稿適配所有iOS設(shè)備(二)

                    接下來就到了添加約束的時候了,最常用的是右下角的四個按鈕,這次會用到后三個。

                    一稿適配所有iOS設(shè)備(二)

                    先介紹一下第一種添加約束的方法:Pin。選中Logo,點擊Pin按鈕,會出現(xiàn)一個Add New Constraints的Popup(如下圖),這個就是我們來添加約束的地方。上部分用來定義當前選中的視圖和附近的視圖的上下左右的距離,點擊三角形下拉框可以看它附近的視圖有哪些,有多個的話和可以自己選擇,默認是離它最近的那個。點擊紅色的虛線約束線,變實線后表明添加了相應(yīng)約束。下面可以設(shè)置寬度和高度,你也可以讓它固定長寬比(Aspetc Ratio),這樣就算單向拉伸時你的圖片也不會變形。如果你一起選擇了多個視圖,你可以讓他們等高或等寬,還可以進行對齊。

                    一稿適配所有iOS設(shè)備(二)

                    當約束線是紅色時,就表明我們添加的約束還有問題。可以看到,在上圖左上角有一個紅色的箭頭,這就報錯,點擊后能看到具體的報錯信息:
                    ?

                    Need constraints for :X position
                    ?

                    這條信息提示我們沒有給出X方向的位置信息。我們要求這個圖是居中的,所以要添加一個水平方向的居中的約束就可以了。這時候就要用到第二種添加約束的方法了:點擊Align按鈕也會出現(xiàn)一個Popup,我們在這里進行各種對齊操作。勾選Horizontally in Container,點擊Add 1 Constraint后就行了。

                    一稿適配所有iOS設(shè)備(二)

                    添加上這個約束后能發(fā)現(xiàn)紅色的線不見了,變成了黃線,還出現(xiàn)了一個黃色的虛線框。這個虛線框表示這是Xcode 通過我們給的約束推斷出來的位置。我們需要Update Frame,讓這個logo跑到它該待的位置。

                    一稿適配所有iOS設(shè)備(二)

                    點擊Resolve AutoLayout Issues 按鈕,在出現(xiàn)的Popup里選擇第一個Update Frames。

                    一稿適配所有iOS設(shè)備(二)

                    Update完成后我們看到Logo 已經(jīng)跑到正確的位置去了,這時候所有的約束線都變成了藍色。藍色的約束線就代表Xcode能通過現(xiàn)在所加的約束可推斷出頁面的布局。

                    定位輸入框和登錄按鈕

                    接下來就開始定位輸入框,同樣先從控件庫里面拖出一個TextField來,在placeholder 里輸入提示文字。順便提一句,TextField的屬性里有一個Keyboard Type 選框,在這里我們可以選擇該輸入框?qū)?yīng)的輸入鍵盤。如果你的用戶名都是手機號,那么就應(yīng)該在這里選擇數(shù)字鍵盤。
                    ?

                    Tips:在iOS系統(tǒng)里,你可以給每個輸入框都指定相應(yīng)的鍵盤。當你在設(shè)計輸入框時可以說明它使用的是哪種鍵盤,如只能輸入數(shù)字的輸入框彈出的就因該是數(shù)字鍵盤。

                    一稿適配所有iOS設(shè)備(二)

                    接下來同樣是用Pin按鈕來添加約束。要求它離上面的Logo 為30 ,輸入框高度為45,寬度隨著屏幕伸縮,屏幕兩邊各留15的邊距(margin)。需要注意的是這里要取消勾選 Constrain to margins 選項。我們設(shè)置的margin是15,而蘋果默認也會有一個margin,當這個選項勾上以后,默認的margin也會算在里面,我們的margin是自定義的,不需要使用默認的,所以這里要取消勾選。

                    一稿適配所有iOS設(shè)備(二)

                    添加完成后Update一下,就能看到預(yù)期的效果了。我們可以用同樣的方式定位好第二個密碼輸入框,但是,這里我們要用另一種方式來添加約束,也是第三種常用的添加約束的方法。這次我們要以第一個輸入框為基礎(chǔ)來定義第二個輸入框。讓第二個輸入框和第一個一樣高,同時首尾對齊。這樣做的好處就是如果我們下次要修改,如修改高度,那么我們只要改第一個,第二個也會跟著變化,而不需要再一個個去改。
                    ?

                    具體的操作方法是先選中你要定位的視圖,按住Control鍵后拖動到另一個視圖上后釋放,會出現(xiàn)一個菜單,在菜單里可以選擇它們之間的關(guān)系,按住Shift 后可以多選,選好后按Return 確認。

                    一稿適配所有iOS設(shè)備(二)

                    我們在彈出的菜單里選擇讓它們首尾對齊(Leading , Trailing),等高(Equal Heights),還有加上垂直方向上距離,Vertical Spacing 就是將當前的垂直方向的距離作為默認的數(shù)值,我們可以雙擊這個約束線來修改數(shù)值大小,這里我們將大小改為10 。

                    一稿適配所有iOS設(shè)備(二)

                    完成以后我們從控件庫里拖出一個Button ,在Attributes inspector里將標題改為“忘記密碼”,顏色改為灰色。用上面的方法讓它與輸入框的 Trailling(尾部) 對齊,同時離上一個輸入框距離也為10 ,放好修改密碼的按鈕。
                    ?

                    再拖出一個Button,用來做登錄按鈕,將Background改為之前導(dǎo)入的按鈕切圖。用我之前說過的方式添加好約束。這里按鈕的高度為45,離密碼輸入框的距離為60。

                    一稿適配所有iOS設(shè)備(二)

                    第三方登錄模塊?

                    這樣我們的登錄界面大致就完成了。下面還有一個第三方登錄模塊。首先是“使用第三方賬號登錄”的標簽。這是一個Label,直接從控件庫里拖出來,然后修改一下內(nèi)容,顏色,調(diào)整字體,接下來添加兩個約束就行了。一個是屏幕內(nèi)水平方向居中,另一個是距離上面的登錄按鈕40。寬度和高度會根據(jù)內(nèi)容自己判斷,不需要添加。

                    一稿適配所有iOS設(shè)備(二)

                    在上圖中的第4步中的修改字體,當我們點擊Font輸入框中的灰色箭頭后會出現(xiàn)一個Popup,里面的第一個下拉框是Font ,當我們點擊展開時,就能看到很多選項了,默認選擇的是system。

                    一稿適配所有iOS設(shè)備(二)

                    用過iOS系統(tǒng)的人都知道,在系統(tǒng)設(shè)置里面可以修改字體的大小,有些人會將字體都調(diào)大,但很多第三方的App的并不支持這一功能。如果你看過 iOS Human Interface Guidelines的話,你可能會注意到里面有一章講到過 Dynamic Type。iOS 已經(jīng)設(shè)置一部分字體樣式,如果你使用的是這些系統(tǒng)樣式,那么在設(shè)置里調(diào)大字體后,你的App里的字體也能變大。這樣的功能對于我們來說可能用處不大,但是對我們父母來說還是很貼心的。
                    ?

                    而這里的Text Styles 正是蘋果提供的字體樣式。具體的樣式對應(yīng)的字號,以及隨著系統(tǒng)設(shè)置的變化,各個字體怎么變化,都能查到,我在這里截了一個在默認狀態(tài)下的字體大小。詳情點擊這里:https://developer.apple.com/ios/human-interface-guidelines/visual-design/typography/

                    一稿適配所有iOS設(shè)備(二)

                    再講一些關(guān)于標簽(Label)的問題,一個是我在“添加Label”這個圖上用紅色框框起來的AutoShrink(自動縮放)。通常我們都會遇到這樣的情況:標簽的內(nèi)容特別多顯示不下時,多出來的內(nèi)容都會被自動截掉,用省略號代替,有時候省略掉的甚至是比較重要的信息。而這個AutoShirnk就是來解決這個問題的,你可以設(shè)置一個最小字號或者一個最小縮放比例。當頁面變化而導(dǎo)致內(nèi)容顯示不下時,你的標簽的字號首先會自動縮小,直到縮小到你規(guī)定的最小值時才會將多出的內(nèi)容省略掉。
                    ?

                    另一種方式是多行顯示,同樣在“添加Label”這個圖上用紅色框框起來的Lines輸入框,默認的是1,就代表只顯示一行,你可以在這里設(shè)置顯示的行數(shù),如果你將它改為0,則代表顯示多行。

                    一稿適配所有iOS設(shè)備(二)

                    Tips:在設(shè)計iOS軟件時應(yīng)優(yōu)先考慮使用Dynamic Type,在設(shè)計Label時(幾乎每個App 都會用到),應(yīng)該考慮各種極限情況,并給出相應(yīng)適配策略。如當文字顯示不下時是讓文字縮小還是省略掉多出來的內(nèi)容。
                    ?

                    回來繼續(xù)說下面三個第三方登錄按鈕。我的要求是他們之間的間隙隨著屏幕的寬度變化而變化。屏幕寬度越小它們之間靠的就越近,反之則分的越開。想要達到這樣的效果,我們可以先將他們編一個組,讓這個組的寬度隨著屏幕變化而變化。
                    ?

                    首先我們先拖出一個UIView,這是一個最基礎(chǔ)的視圖,將它當做放按鈕的容器,也就是上面說的組。(這里其實可以用Stack View 作為這個容器,使用起來更簡單,我在下篇會詳細介紹Stack View )

                    一稿適配所有iOS設(shè)備(二)

                    按照上圖的要求添加好約束后,我們會發(fā)現(xiàn)一個問題,因為選擇的是Equal Widths ,導(dǎo)致這個組的寬度是和屏幕是一樣寬的,這顯然不是我們要的效果。雙擊這個等寬的約束后,我們能看到我在上一篇里講過的Multiplier了,只需要修改這個約束的Multipier,將它改為0.6,這樣,這個組的寬度就一直是屏幕寬度的60%了。

                    一稿適配所有iOS設(shè)備(二)

                    接下來我們只要將三個按鈕固定在這個組里的最左邊,中間,最右邊就行了。這樣就能到達我們要的效果了。

                    一稿適配所有iOS設(shè)備(二)

                    添加完成后UpdateFrame,就能看到下圖的效果了。最后我們只要將這個作為容器的View 的背景改為透明就行了。

                    一稿適配所有iOS設(shè)備(二)

                    這樣,我們的登錄界面就完成了,現(xiàn)在這個頁面就能根據(jù)我們的要求適配各個屏幕尺寸了。我們可以選擇不同的模擬器,查看它在不同設(shè)備上的運行效果,無論橫屏和豎屏它都能跟著調(diào)整。需要注意一下的是在橫屏情況下可能會有一部分界面超出屏幕范圍,本來所有元素都應(yīng)該放在一個ScrollView里,這樣超出屏幕的部分就能向上滑動了,這里為了方便演示并沒有加。

                    一稿適配所有iOS設(shè)備(二)

                    下面就是它不同設(shè)備上的運行效果。

                    一稿適配所有iOS設(shè)備(二)

                    一稿適配所有iOS設(shè)備(二)

                    可以看到,它不僅支持iPhone,還支持iPad,而且橫屏豎屏都行,應(yīng)對iPad的多任務(wù)顯示也不在話下。很多人覺得如果要支持iPad 就需要重新開發(fā)一個App。實際上在本文的開頭,你在創(chuàng)建項目的時候會讓你選擇支持的設(shè)備,默認的是Univerasl(全平臺),也就是說你要是適配的好,一個安裝包就能同時支持iPhone 和 iPad,而不需重新開發(fā)。
                    ?

                    好了,這篇就講到這里,下一篇我會介紹一下Stack View 以及更多AutoLayout 的相關(guān)知識和實際應(yīng)用。

                    Via: DDC

                    給TA打賞
                    共{{data.count}}人
                    人已打賞
                    網(wǎng)頁理論

                    網(wǎng)頁中為你指路的面包屑到底應(yīng)該如何使用?

                    2016-8-23 3:41:25

                    網(wǎng)頁理論

                    UX設(shè)計中的單選框

                    2016-9-2 5:22:40

                    ?
                    個人中心
                    購物車
                    優(yōu)惠劵
                    有新私信 私信列表
                    搜索
                    主站蜘蛛池模板: 成人午夜福利视频镇东影视| 大学生久久香蕉国产线看观看 | 国产亚洲一卡2卡3卡4卡新区| 国产丝袜在线精品丝袜| 欧美激情在线播放| 国产乱子伦视频大全亚瑟影院| 亚洲 一区二区 在线| 好紧好爽午夜视频| 亚洲中文字幕琪琪在线| 日韩一区日韩二区日韩三区| 欧美xxxx做受欧美1314| 国产熟妇疯狂4p交在线播放| 东京热av无码电影一区二区| 天天做天天爱夜夜爽女人爽| 亚洲嫩模一区二区三区| 96精品国产高清在线看入口| 青娱国产区在线| 亚洲乱熟女一区二区三区| 精品一区二区不卡无码av| 欧美成人精精品一区二区| 性欧洲大肥性欧洲大肥女| 中文字幕在线精品国产| 欧美大屁股bbbbxxxx| 欧洲美熟女乱又伦AV影片| 久久男人av资源网站无码软件| 精品人妻无码一区二区三区9| 欧美国产精品不卡在线观看| 人人澡人人透人人爽| 欧美双人家庭影院| 韩国无码av片在线观看| 欧美交A欧美精品喷水| 国产精品女丝袜白丝袜| 成人欧美日韩一区二区三区| 久久99精品久久久久久9 | 丝袜国产一区av在线观看| 2021久久最新国产精品| 成人av片在线观看免费| 国产精品人成视频免费播放| 高清国产一级毛片国语| 337p大胆啪啪私拍人体| 亚洲伊人色欲综合网无码中文|