2016-06-14 36 views
0

我有一個放置在scrollView中的UIView。了UIView具有我在故事板已經設置4個約束:如何在使用autolayout時將UIView在UIScrollView的內部居中放置?

  • 等於寬度滾動視圖(W/A 0.98乘數)
  • 相等的高度要滾動視圖(W/A 0.98乘數)
  • 水平居中內滾動視圖(W /常數= 0)
  • 垂直內滾動視圖中心(W /常數= 0)

scrollView具有所有常量= 0的常規尾部,頂部,頂部,&底部約束。

我還爲我的scrollView設置了以下屬性。

self.scrollView.contentSize.width = self.scrollView.frame.size.width + 30 

我該如何將UIView集中在我的scrollView中?

注意:我確實可以訪問self.horizo​​ntalCenterConstraint.constant,它可以控制UIView在scrollView中的位置。我試着做

self.horizontalCenterConstraint.constant = (self.scrollView.contentSize.width/2) 

但這實際上並不居於UIView中的scrollView。

+0

您在哪種方法中設置'contentSize'和'horizo​​ntalCenterConstraint'? (viewDidLoad,viewWillAppera ...) – tbilopavlovic

+0

這一切都發生在UITableViewCell內部,所以我讓單元覆蓋traitCollectionDidChange(..),那就是我設置它們的地方。最初也在awakeFromNib(..)中。 – AppreciateIt

+0

我認爲您需要在視圖和scrollView之間添加尾隨,前導,頂部和底部,因此scrollview可以計算視圖距contentSize邊緣的距離 – tbilopavlovic

回答

1

我建議添加containerView作爲scrollView的根子視圖(前導,尾隨,頂部,底部= 0和等同的寬度和高度作爲scrollView),然後添加這個視圖,你想要的。

  • 滾動視圖
    • containerView
      • YOUR_VIEW(相同的約束,你已經有了)

現在滾動視圖可以計算出,因爲containerView的約束contentSize , 一個nd我看到你添加了self.scrollView.contentSize.width = self.scrollView.frame.size.width + 30,所以只需將containerView的寬度設置爲比scrollView寬,並且它將水平滾動....

+1

這工作,有一個修改,我讓它工作雖然。我必須將horizo​​ntalCenterConstraint.constant設置爲EqualWidths.constant的一半。因此,例如,如果scrollView必須在我的UIView的每一邊有30個點,那麼我將有EqualWidths.constant = 30和horizo​​ntalCenterConstraint.constant = 15。scrollView的contentOffset也必須修改,但我的scrollView不允許它(沒有可見的變化)。也許有誤解? – AppreciateIt

+0

手動修改scrollView.contentoffset非常煩人,尤其是因爲它只是在我爲scrollView子類並在覆蓋layoutSubviews(..)時執行它的工作。每當出現traitCollection變化時,也必須對其進行修改,因爲每次設備旋轉時偏移量都會更改。 – AppreciateIt

相關問題