2016-06-14 92 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

相关问题