2014-08-28 27 views
0

在阅读大量信息后,我决定在该主题上编写新问题,并尝试成功,但没有结果。接口生成器问题中的UIScollView和自动布局问题

该任务看起来微不足道。我有ScrollView。它有一个UIView类型的子视图(我们称之为ContentView)。内容视图又有2个类型为UIView的子视图(我们称之为ViewA和ViewB)。

-ScrollView 
    -ContentView 
     -ViewA 
     -ViewB 

ScrollView有4个约束,它将它绑定到superview的所有边。 ViewA有3个约束(对ContentView) - 顶部,左侧和右侧。 ViewB有4个约束(ContentView) - 底部,左边,右边和高度。 ViewA的底部和ViewB的顶部之间还有一个限制。我的想法是,我将在运行时更改ContentView的框架,ViewA和ViewB的大小和布局会相应地自动进行。

嗯,它不工作。我试图从ContentView到ScrollView中添加不同的约束,尝试了它们。得到不同的结果,但没有一个是正确的。例如,ContentView对ScrollView有4个约束(顶部,底部,左侧和右侧)。我在运行时设置了ContentView的Frame。但是,它会被重置,并且最终,ContentView框架基本上具有ViewB(它具有高度约束)的高度。

非常感谢您的帮助。

回答

0
  1. 请勿设置内容视图的框架。
  2. 您需要添加一个约束viewA以这样的方式,将定义其高度。
+0

我是不是这样加入? ViewA的高度应根据ContentView大小自动计算,并考虑到ViewB的固定高度。否则,我不明白在这个例子中约束的目的。对我而言,他们应该在运行时调整视图大小。否则,我可以简单地设置所有框架。内部视图也有宽度。根据你的话,我必须设定它。但是,我的想法是,我将在运行时(ContentView)设置一个帧,并且其中的所有内容都将相应地布局 – Ingweland 2014-08-28 19:57:54

+0

使用带有scrollView的Auto Layout绝对不是直观的,我建议阅读Apple关于该主题的技术说明:https: //developer.apple.com/library/ios/technotes/tn2154/_index.html阅读“纯自动布局方法”一节。如果你这样做,你将能够拥有动态布局。关键要记住的是,scrollView中的每个视图都需要显式约束来定义其宽度/高度或具有固有大小(如UILabel)。 – 2014-08-28 20:35:31

+0

已经多次阅读。试图理解它。最后,我想在IB中设置所有东西不是一种选择。 – Ingweland 2014-08-28 20:41:50