2016-08-18 50 views
0

我很難得到這個工作,最好的解釋了我想用我的故事板的這個圖像做什麼。UIScrollView在主UIView內部的一個較小的UIView

Storyboard

主要目標是使該容器可滾動的,與它的尺寸依賴該被經由代碼加入到它的視圖控制器上。

這是我如何展示我的觀點。

Layout of Views

顯然,我的約束是什麼是搞亂了我,但不完全知道如何讓他們像預期的那樣,我已經試過釘扎容器滾動視圖,然後滾動視圖到主視圖。屏幕出現我想要的,但它只是不滾動。

任何幫助非常感謝!

回答

0

所以對於任何人想知道如何做到這一點,我終於想出瞭如何做了很多反覆試驗後。 基本上我所做的就是從故事板取出容器視圖,設定我的滾動視圖的約束,因爲我通常會:

Constraints

,然後添加一個容器視圖在代碼中滾動視圖的子視圖:

var containerView : UIView! 
var currentViewController: UIViewController 

override func viewDidLoad() { 
     super.viewDidLoad() 

     self.containerView = UIView() 
     self.scrollView.addSubview(self.containerView) 
} 

爲了不同視圖控制器之間使用我UISegmentControl和交換具有滾動內容的滾動視圖不管新的視圖控制器多大添加以下代碼在我UISegmentControl功能

@IBAction func segControlValueChanged(sender: AnyObject) { 
    if let vc = viewControllerForSelectedSegmentIndex(sender.selectedSegmentIndex) { 
     self.currentViewController!.view.removeFromSuperview() 
     self.currentViewController!.removeFromParentViewController()  
     displayCurrentTab(sender.selectedSegmentIndex) 
    } 
} 

func displayCurrentTab(tabIndex: Int){ 
    if let vc = viewControllerForSelectedSegmentIndex(tabIndex) { 
     self.addChildViewController(vc) 
     self.containerView.addSubview(vc.view) 
     vc.didMoveToParentViewController(self) 
     vc.view.frame.size = CGSize(width: self.view.frame.width, height: vc.view.frame.height) //had to add this because otherwise for some reason my new vc width would not increase or decrease to its parent view 
     self.currentViewController = vc 
     self.scrollView.contentSize = vc.view.frame.size 
    } 
} 

func viewControllerForSelectedSegmentIndex(index: Int) -> UIViewController { 
    //instantiate and return your view controller here 
} 

其他一些注意事項:

  • 我在故事板禁用「從NIB調整視圖」爲我所有的視圖控制器我打算加入到容器
0

這是不可能的從您的問題&截圖來確定你實際設置了什麼限制。你的問題甚至沒有特別說明你的約束是否正常運行(除了滾動視圖不滾動,這可能與約束有關)。

首先,我們需要確保我們的約束正確地連接起來。您要爲其放置滾動視圖的容器視圖應該有四個約束。每邊一個,左側&右側,將其固定到那些邊緣。一個用於將底部固定到工具欄,另一個用於頂部將其固定到頂部視圖。它不需要任何更多的限制。現在,底部的工具欄和頂部的視圖需要設置約束條件,以便每個設備/方向的高度不變,並且不關心容器視圖的大小。如果您的約束設置正確,那麼在界面構建器文件中調整此視圖的大小應該改變容器視圖的大小。如果沒有發生這種情況,請回到繪圖板,因爲有些東西不太正確。

如果你確信你的約束設置正確,還有一些關於scrollview本身的事情可能會阻止滾動。

首先檢查最明顯的。滾動視圖上的滾動啓用屬性是否設置爲true?如果沒有......當然它不會滾動。

可能發生的另一件事是您的內容視圖不會比滾動視圖大。確保您已經爲滾動視圖的內容正確設置了自動佈局,否則內容視圖將不會大於滾動視圖,並且不會發生滾動。

+0

好吧,我只是後一般提示爲在這種情況下需要制約,我照片中的那些可能是錯誤的,所以我沒有看到顯示它們的一點。 因此,滾動視圖應該在容器內,而不是像我在我的照片中那樣繞過其他方式?,好吧,生病了,看看這是怎麼回事,讓你知道 – beerye