利用Storyboard給UIScrollView新增約束
之前在專案裡面使用Storyboard的時候也會遇到UIScrollview,因為不知道怎麼給scrollview新增約束,UIScrollview適配很是麻煩,尤其是針對滾動在iPhone4超出螢幕卻在iPhone6 上不超出的狀況,所以每次都是程式碼,但是每次都感覺這樣做很low,但是苦於專案很急,一直沒有抽時間研究下,現在給大家貼出來好久就想寫出來的解決方法。
在StoryBord拖過scrollview,新增約束的時候發現他並不會按照你猜想的去執行。經過查閱資料,大致知道了原因。這是由於scrollview本身contentSize、contentInsets等複雜的特性導致,蘋果文件在講autolayout的時候甚至專門拿出一節講如何對scrollview進行自動佈局。解決方案可以給scrollview新增一個唯一的子檢視,大小和scrollview一樣,然後所有原計劃新增到scrollview上面的控制元件,都新增在子檢視上面。步驟如下:
1.首先在我們的Controller自帶的View裡面新增一個scrollview,點開下面設定約束的4個按鈕的第2個,約束設定距離父試圖的距離為(0,0,0,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的哦~。佈局。
上面的View是設定的固定的一個值。 如果想要動態的設定,就需要把我們剛才加的高度的約束設定成屬性
起一個名字, height; 然後重寫 -(void)updateViewConstraints 方法,在呼叫super 後 動態的設定height這個約束的constant屬性。
相關文章
- UIScrollView在StoryBoard中的使用UIView
- (10)邏輯綜合新增約束(環境約束)
- 新增/刪除約束(Oracle)Oracle
- mysql新增約束語句筆記MySql筆記
- 【SQL】15 SQL 約束(Constraints)、NOT NULL 約束、UNIQUE 約束、PRIMARY KEY 約束、FOREIGN KEY 約束、CHECK 約束、DEFAULT約束SQLAINull
- (9)邏輯綜合新增約束(時序、DRC)
- mysql不能新增外來鍵約束怎麼辦MySql
- Mysql-基本練習(06-唯一約束、外來鍵約束、新增、刪除單列)MySql
- Javaweb-約束-外來鍵約束JavaWeb
- Oracle定義約束 外來鍵約束Oracle
- SQL約束SQL
- Oracle約束Oracle
- oracle 約束Oracle
- MySQL 約束MySql
- 03約束
- 綜合約束
- 圖文詳解ScrollView子控制元件約束新增View控制元件
- 利用函式索引解決複雜的約束問題函式索引
- 約束介紹
- 差分約束
- C# 泛型 引用型別約束 值型別約束C#泛型型別
- 【.NET】利用 IL 魔法實現隨心隨意的泛型約束泛型
- SQLServer約束介紹SQLServer
- MySQL自增約束MySql
- MySQL 欄位約束MySql
- 約束CONSTRAINTAI
- 《學習》6約束
- sql: 查詢約束SQL
- constraint約束AI
- oracle中的約束Oracle
- oracle 約束詳解Oracle
- Oracle約束簡介Oracle
- oracle鍵約束控制Oracle
- Javaweb-約束案例JavaWeb
- 練習:NICK方案中PurchaseOrder新增CHECK型別的約束,要求ReceivedDate >= PODate型別
- 利用虛擬列實現虛擬刪除的主外來鍵約束
- SQL中給varchar2(5)資料型別合適的約束SQL資料型別
- 資料庫常用約束資料庫