2015-01-20 32 views
1

我使用的是滚动型在我的主网页垂直滚动像这样(新iPad分辨率)的内容来看:更改ScrollViews子视图动态地在iOS的8

enter image description here

为此,我设置了View在顶部和另一个View下面。

但要我要在这里做的就是改变以下View到显示器到另一个View更多更大的,如果某些条件为真,(例如,在viewDidLoad())和滚动型垂直滚动关于另一View的大小,但另一个View的大小是实际的两倍,像下面的图片:

enter image description here

当然上面的图片只显示我希望看到它在一般情况下,在这种情况下,我想成长ScrollView的contentSize更高(in 运行)。

这里我的问题是,当我没有设置相应的约束条件时,我可以根据需要更改contentSize,但是当我旋转设备时,我的子视图保持宽度为768,但是如果在设置自动布局约束时我旋转设备一切正常,但我无法更新ScrollView的contentSize,因为它基于他的子视图计算他的度量。

我该如何做到这一点?

还有比滚动视图更好的任何其他用户界面?

+0

你是说你想要顶视图有一个固定的大小(比如200),然后底部的视图有剩下的吗?即底部视图高度= screenHeight - 200? – Aggressor 2015-01-20 22:53:57

+0

@Aggressor是的下面的视图有ScrollView的其余高度。 – 2015-01-20 22:59:20

+0

你能否再解释一下你的底部段落?它不太清楚 – Aggressor 2015-01-20 23:04:58

回答

1

以下是设置方法,以便您可以垂直滚动,并以编程方式更新grayView的高度。

  1. 将顶部,左侧,右侧和底部的scrollView限制在顶级视图的顶部,左侧,右侧和底部。

  2. 将orangeView的左侧,顶部和右侧限制在scrollView的左侧,顶部和右侧。将orangeView的宽度限制为等于scrollView的宽度。为orangeView的高度设置约束(如200)。

  3. 将grayView的左侧,底部和右侧限制在scrollView的左侧,底部和右侧。将grayView的宽度限制为等于scrollView的宽度。为灰色视图的高度设置一个约束(如800)。将IBOutlet设置为您的代码的限制,以便您可以通过更改其constant属性更新其高度。为此,请查看并控制从其中拖动到您的代码以创建IBOutlet的约束条件。给它起一个名字,如grayViewHeight。当你想要设定它时grayViewHeight.constant = 1000

  4. 在orangeView和grayView之间添加垂直空间约束。

现在您的scrollView的内容大小已完全指定,您可以在需要时进行扩展。 orangeView和grayView将自动水平伸展以匹配所有方向的scrollView的宽度。在故事板

  • +0

    不是我正在寻找的内容,但是您的回答给了我一个不错的主意,并且我解决了问题 – 2015-01-21 17:28:45

    1
    1. 安装委托的UIScrollView设置自动版式/自动调整用于滚动视图。
    2. 然后在viewDidLoad()方法中添加以下代码。

      var contentRect: CGRect = CGRectZero 
      
      for view: UIView in self.scrollView.subviews 
      { 
          contentRect = CGRectUnion(contentRect, view.frame) 
      } 
      self.scrollView.contentSize = contentRect.size 
      scrollView.addSubview(viewtoscroll) 
      

    然后运行你的应用程序。它适用于每种屏幕尺寸。

    +0

    非常感谢! – Trip 2016-03-11 13:00:12