2016-11-15 54 views
1

我的UI結構是這樣的:的UIButton在UIScrollView中的底部不工作

- View 
    - Scroll View 
    - Container View 
     - Dynamically added UI element 
     - Dynamically added UI element 
     - Dynamically added UI element 
     - .... 
     - UIButton 

加入所有UI元素(包括與UITapGestureRecognizer所述的UIButton)中,用以下的方法在更新的UIScrollView大小...

func updateScrollViewSize() { 
    var contentRect = CGRect.zero 
    for view in containerView.subviews { 
     contentRect = contentRect.union(view.frame) 
    } 
    contentRect.size = CGSize(width: scrollView.contentSize.width, height: contentRect.height + TRAILING_SCROLLVIEW_SPACE) 
    scrollView.contentSize = contentRect.size 
} 

...我注意到,它只會工作如果我在視圖的頂部添加一個UIButton - 那些我只有通過滾動(例如,在底部的一個)達到沒有。

好,我想,這樣的按鈕被創建外容器的觀點幀的,因而我添加以下行到我updateScrollViewSize方法。

containerView.frame.size = contentRect.size 

不幸的是,這並沒有解決我的問題。

我試着找了一段時間的解決方案,但沒有人能幫助我。我仍然99%確定它與我的Container Views框架有關,但我無法弄清楚如何解決這個問題。任何幫助,將不勝感激!

+0

嘗試將容器以真實的-clipsBounds /是的。是的按鈕仍然可見? – isaac

+0

設置contentSize的scrollView的高度=最後添加UI組件的Y POS +高度+10或相應的 – vaibhav

+0

@isaac:它不是我調試它使用'print containerView.frame.bounds',高度相應地改變到內容。這是我訪問的錯誤屬性? – CAAnimationDelegate

回答

1

如果使用任何約束創建子視圖後,在頂視圖上調用layoutIfNeeded()。 確保了滾動的contentSize符合您containerView.frame(不.bounds,因爲這不會告訴你,如果比如你的框架y位置低於零。