你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> UIScrollerview的contentsize設置

UIScrollerview的contentsize設置

編輯:IOS技巧綜合
[摘要]本文是對UIScrollerview的contentsize設置的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

  最近被同行的一個朋友問到一個問題“UIScrollerview上添加子控件,給子控件約束好布局之後,還需要給scrollerview重新設置contentsize嗎?”於是想到了我自己曾經著手的一個項目,有一個界面就用到了scrollerView,裡面添加了子控件,我記得當時scrollerView的frame和屏幕的一樣,contensize最後是在裡面的子控件布局結束之後重新設置的,所以我的回答是需要設置呀。可是最後,那個朋友就告我讓我回去再試試,說是不需要設置的,還說可能是我和他那邊的需求不一樣我的才需要重新設置contentsize。最後自己就試了試,整理如下。

  首先用storyboard創建一個UIScrollerview到當前view上,設置好上下左右的間距,更新布局,這時候肯定是沒有問題的,正常顯示。之後又放一個UIImageview到scrollerView上,上下左右到scrollerView的間距,更新約束,這時候卻顯示布局報錯,按理說正常的控件這時就可以正常工作吧。問題的關鍵在於如何給scrollView內部的子控件添加完整約束.scrollView內部子控件約束的添加需要遵循兩個原則:

1、scrollView內部子控件的尺寸不能以scrollView的尺寸為參照
2、scrollView內部的子控件的約束必須完整

首先,子控件的尺寸不能以scrollView的尺寸為參照,那麼我們有兩種選擇:

    提供一個具體值的約束(比如200) 子控件的尺寸可以參照scrollView以外其它的控件的尺寸(如控制器的view的尺寸)

其次,約束"完整"的意思是說:子控件在水平及豎直方向上的約束要把scrollView"撐滿".

也就是說,在水平方向上,我們需要設置:

    子控件左側與父控件的距離 子控件自身的寬度 子控件右側距父控件的距離.

豎直方向上也一樣,要設置:

    子控件頂部距父控件的距離 子控件的高度 子控件底部距父控件的距離.

上面我的問題就在於沒有設置UIImageView的尺寸。

為什麼scrollView如此特殊呢?

這是因為,scrollView需要根據添加在其內部的子控件的寬高及與四周的距離計算出它的contentSize.

例如:
一個添加在scrollView內部的imageView的寬高為{80, 50}, imageView距離上左下右的距離分別為:100, 200, 300, 400,那麼不需要用代碼賦值contentSize,我們就可以打印出scrollView的contentSize為{680, 450}.
如圖:

也就是說,子控件的約束決定了container的尺寸(contentSize).

這裡自己用storyboard親測是可以的,壓根不需要設置contentsize;然而在用我自己常用的布局框架SDAutolayout卻發現了問題,contentsize始終為最初的屏幕大小,最後又用布局框架Masonry試了一遍,這時候卻是可以的,好吧,到這裡我只能說,SDAutolayout原來還有這個問題,我原來的項目scrollerView布局正好用的SDAutolayout,真的坑死我了,明明是此布局框架的問題,請注意了!!

原帖:http://blog.csdn.net/u014795020/article/details/51893943

  1. 上一頁:
  2. No
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved