2014-01-09 88 views
1

在我的應用程序中,我有一個像主視圖 - > UIScrollView - > UISearchBar層次結構。搜索欄覆蓋整個屏幕的寬度。但是當它切換到橫向時,scrollview會根據橫向進行自我調整並覆蓋整個屏幕,但其子視圖像UISearchBar寬度與縱向相同。另外我使用Autolayout,並且我已經在故事板中正確設置了它們的約束(前導和尾隨,寬度(大於等於320)等)。UIScrollViews子視圖不調整自己的縱向到風景方向更改

另外我知道這裏有幾個答案,但幾乎所有人都在willAutororate再次說設置寬度。但我在UIScrollview中有大約15個子視圖,我認爲不可能通過編程設置(如增加LOC),我認爲Autolayout必須有一些解決方案。

+0

我會解釋它,但我認爲這傢伙確實比我好所能。 http://codehappily.wordpress.com/2013/11/14/ios-how-to-use-uiscrollview-with-autolayout-pure-autolayout-approach-multiple-smaller-views/儘管在附註中,如果你想要設置子視圖的約束條件,您可以在子視圖上運行一個for-in循環。 –

回答

2

試試這個: 這個問題將限制只解決。我創建了一個項目,通過使用正確的約束其工作爲我好

在這裏我要告訴你如何通過一個加正確的約束之一:

  1. 添加滾動視圖和添加了滾動的限制只喜歡在截圖:

enter image description here

2. now add search bar and add constraints for search bar too, 
here below you can find out complete constraints for scrollview and search together: 

enter image description here

+1

它的工作。我忘了進入水平中心對齊。謝謝 –

0

您可以使用子視圖的UIViewAutoresizing蒙版(autoresizingMask屬性)。

+0

這種解決方案不適用於我的情況。 –

+0

您是否嘗試將autoresizingMask = UIViewAutoresizingFlexibleWidth設置爲您的搜索欄? – johnyu

+0

是的,我已經這樣做,但它不工作。 –

11

Scrollviews約束得到很好的發揮。下面是使用該爲我工作有垂直滾動滾動視圖,不需要任何手動或內容大小finagling與旋轉工作的制約和Interface Builder做法:

  • 滾動型的定位與約束的視圖控制器
  • 的容器(UIView的),其是滾動視圖的子視圖定位約束釘扎每個邊緣至上海華
  • 所有附加子視圖添加到所述容器視圖來代替。使用約束。超過scrollview的高度以獲得垂直滾動滾動視圖。

有一招不過來獲得旋轉縮放,自動將工作:

  • 你有一個附加約束添加到容器以期寬度匹配到UIScrollView的寬度 。奇怪的是,你必須這樣做,因爲將每一側固定在滾動視圖上應該能夠做到這一點,但是如果你不添加額外的約束,它可能不適用於旋轉。

這裏就是我的意思是:

UIScrollView with constraints in Interface Builder

+0

同樣的方法可以用於水平滾動滾動視圖。只需爲高度而不是寬度添加額外的約束,然後添加子視圖即可超過水平滾動的寬度。 – n8tr

相關問題