iOS開發-UI 從入門到精通(五)


近日在做項目的時候,為了快捷適配屏幕采用了Storyboard,添加約束以后運行后發現一個問題(下面將以普通案例展示該問題);在4.7 甚至更大的屏幕下是沒有問題的,如下圖(4.7屏幕):

但是放到更小的3.5英寸就會出現問題,發現下面的按鈕不見了,主要原因是輸入框太多,導致更個屏幕放不下,如下圖(3.5屏幕):

想了下就決定用ScrolleView,ContentSize可以設置大一些,這樣在其他屏幕上沒有太多的影響,在3.5英寸的屏幕下也可以滑動了;但是在Storybord下添加ScrollView,添加約束的時候發現他並不會按照你猜想的去執行;經過仔細研究,大致知道了原因;這是由於scrollview本身contentSize、contentInsets等復雜的特性導致,蘋果文檔在講autolayout的時候甚至專門拿出一節講;

那么如何對scrollview進行自動布局?

解決方案:可以給ScrollView添加一個唯一的子視圖(View),大小和ScrollView一樣,然后把所有添加到ScrollView上面的控件,都添加在子視圖(View)上面;

步驟如下:

1、首先在我們的Controller自帶的View里面添加一個ScrollView,一般情況下一個View的邊距確定是通過Leading, Trailing, Top, Bottom space確定的,通常我是使用最快捷的方式:在StoryBoard中右鍵拖動出View與SuperView的線來選擇;但是如果對UIScrollView使用此方法,使其與SuperView邊緣重合,即設置邊距為0,會發現怎么也和SuperView對齊不了。

究其原因,是因為有一個默認Margin的存在,UIScrollView四周的默認Margin是16(xcode6.0);

解決方法是:不要用快捷方式,在StoryBoard的右下角,點自動布局第二個的Pin圖標,在彈出的小窗口中去掉"Constrain to margins"的勾選,然后將其上的四個邊距設置為0,如下圖所示:

2、在ScrollView上面添加一個View成為ScrollView的子視圖,點開下面設置約束的4個按鈕的第2個,設置約束距離ScrollView的距離為(0.0.0.0)如下圖所示:

3、這個時候會發現報錯了,先不用管它,咱們繼續往下走;

4、點開下面設置約束的4個按鈕的第一個,選擇 Horizontal Center in Container, 並打上對勾,(如果想要左右滑動就選擇 Vertical Center in Container,同時實現左右上下則全不選);

5、再次打開下面設置約束的4個按鈕的第2個選擇Height 設置你想要的大小(假如是700);(如果想要左右滑動就選擇 Width, 同時實現左右上下就全部設置)(這個高度是以后運行后Scroller的ContentSize);

6、設置完成之后你會發現錯誤不見了,只有一個黃色的警告,這是由於Frame沒有更新導致的,我們來更新下Frame;

7、接下來就可以在這個ScrollView的子視圖View上面來添加控件了,這里要記住設置約束的時候是相對於父試圖View的;

8、運行程序,發現在3.5英寸屏幕已經可以滑動了,,而在4.7屏幕還是和原來一樣  如下圖:

下一篇將持續更新相關知識點;

 Email:dingding3w@126.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM