2013-02-22 143 views
2

在我的UIViewController我有UIScrollViewUIView。这是两种不同的观点,意思是UIView不在UIScrollView里面。我对scrollview有不同的看法,我正在编程设置和增加contentSize。而这UIView是隐藏的,我有时显示。问题是,当我隐藏这个UIViewUIScrollView停止滚动。UIScrollView不滚动ios6

为什么会发生这种情况?

我已将所有前沿设置为两者的超级视角。有关系吗? 请指导我。

大家好,我分享我的ViewController Sceneenter image description here

我使用的自动布局(iOS6的)的图像。 Scroll View ContentSize是(768,1400),我在ViewDidAppear中设置。 View下面Scroll View被隐藏,Scroll View正在滚动没有任何问题。

现在,如果我显示和隐藏ViewScroll View锁,它现在不滚动。 这就是我面临的问题。 我不是在设置内容大小,而是在代码中做任何事情。 如果您需要任何其他信息,请告诉我。

+1

请添加一些代码。 – Kuba 2013-02-22 15:11:41

+0

您隐藏的视图是滚动视图的contentView?如果是这样的话......你需要在 – 2013-02-22 15:13:41

+0

@Rob之间看到另一个视图,我想我需要从UIKit的问题中一起回避... – 2013-02-22 19:03:33

回答

0

没有任何代码,我会大胆地猜测...

如果您contentSize不超过您UIScrollView的大小这将是一个典型的案例。如果您想隐藏视图,然后更改滚动视图的大小,并且您的滚动视图超出或等于您的contentSize,那么您将无法滚动任何内容。

另一种可能是您禁用了用户交互。

6

iOS 6中的contentSize“auto-sizes”本身具有自动布局。这意味着您不能设置contentSize。有些黑客建议在拨打viewDidAppear时设置它,但我会避免这种情况。如果您阅读iOS 6 release notes(在页面上搜索UIScrollView),它会为您提供一些解决方案。其中之一涉及translatesAutoresizingMaskIntoConstraints属性。

+0

我同意你的直觉,但在实践中,我发现如果我简单地将subview设置为隐藏或者为零,那么它不会重新计算'contentSize'。它只能正常工作,如果我重置被隐藏的物品的高度限制。奇怪的是,即使我删除了子视图,它也不会重新计算'contentSize',除非在scrollview上有一些约束可能导致重新计算'contentSize'的_else_。如果删除的子视图是最后一个,则不会重新计算'contentSize'(尽管您可以手动重置)。 – Rob 2013-02-22 18:34:39

+0

永远不要说它工作正常。只是说明为什么它在iOS 6中不起作用的“原因”。发行说明提到了一种解决此问题的方法。 – Luke 2013-02-22 19:35:58

+0

嗨,我知道它是将contentSize设置为UIScrollView的框架大小。如何和何时设置? – Bhushan 2013-03-05 05:54:05

5

删除所有与调整scrollview内容大小相关的代码。 Autolayout在你现在滚动的时候使用这个。完成后请添加以下代码

// Add 200 points to the bottom of the scroll view 
[self.scrollView setContentInset:UIEdgeInsetsMake(0, 0, 200, 0)]; 
self.scrollView.translatesAutoresizingMaskIntoConstraints= NO;