2014-11-14 44 views
0

我有一个奇怪的输出与autoLayout用于以下方案。ScrollView With AutoLayout

我有4个子页面滚动。 (子页面或scrollPage已经与autoLayout分开设计)。

MainView有一个加载子页面的scrollView组件。

一切都很好,除了开始。第一次加载后,子页面组件排列不正确。只要它收到第一次轻拍/触摸,就会自动重新滚动/重新排列到适当的位置。看起来像一个错误。

加载会产生问题。我附上了2张图片供上述场景参考。 FirstOne在第一装载enter image description here

第二个刚上滚动区域攻enter image description here

第二个之后是正确的一个。我需要展示这个,而不是第一个。 需要帮助来解决这个问题。

谢谢, Satyaranjan

还有一点要注意, [myScroll scrollRectToVisible:CGRectMake(320 * PAGENUMBER,0,320,240)的动画:NO]; 这是行不通的因为我使用子页面的动态宽度。因为它会因iPhon5和iPhone6而异

+0

是否有在控制台任何输出,当你加载scrollPage如自动版式警告?何时何地添加约束?你能发布你用来构造视图的一些代码吗? – Jonathan 2014-11-14 14:15:44

+0

[scrollLayer setContentSize:CGSizeMake(self.view.frame.size.width * noofpages,scrollLayer.frame.size.height)]; CGRect sFrame = [scrollLayer bounds]; sFrame.size.width = self.view.frame.size.width; for(int i = 0; i Satyaranjan 2014-11-14 15:11:27

+0

警告消息: “ ”“, ” Satyaranjan 2014-11-14 15:21:22

回答

1

首先,您在使用autolayout时通常不想设置scrollView的contentSize - 如果您的子视图布局正确,它将自动执行此操作。

试试这个:

  • 约束滚动视图的边缘的所有四个其父
  • 确保translatesAutoresizingMaskIntoConstraints是NO所有视图
  • 创建一个名为“内容查看”视图和父它的滚动视图。
  • 针全部四个contentViews的边缘来滚动视图
  • 父的子视图内容查看,并与自动布局

安排他们如果由于某种原因,你需要programmaticly更改子视图的大小,你需要重写它的intrinsicContentSize方法在更改后返回正确的大小。更改后,您可能需要从其父视图调用视图的sizeToFit方法(不确定 - 可能会自动发生)。

一般来说,使用autolayout时,几乎不应该明确设置任何东西的大小。如果无法避免,则应该通过创建高度/宽度约束并在updateConstraints方法中在运行时修改它们来完成。

编辑:

我做了演示如何建立一个滚动视图和其他几件事情的示例项目。

看一看!

https://github.com/annabd351/AutolayoutTemplate

+0

没有设置内容大小,第一个子页面将显示,它不会滚动。除了你的步骤来解决,你可以请详细说明或给我一个链接如何约束边缘。我正在使用“添加缺失”约束选项。 – Satyaranjan 2014-11-14 19:18:34

+0

这里有几个链接:http://spin.atomicobject.com/2014/03/05/uiscrollview-autolayout-ios/ – 2014-11-14 21:09:53

+0

https://developer.apple.com/library/ios/technotes/tn2154/_index。 html – 2014-11-14 21:10:42

相关问题