做一些iPhone开发,让应用程序运行良好。但是,我有一个UIScrollView具有自动调整内容和contentSize非常有效,除非我旋转到横向视图时它在滚动高度上总是有100个左右的像素。我不希望用户能够滚动到目前为止的内容。
是否有其他人遇到此问题或知道修复?
提前感谢,
迈克尔
答案 0 :(得分:4)
我遇到了同样的问题。在我的例子中,我循环遍历UIScrollView,试图动态计算它的contentSize。在循环浏览子视图的过程中,我在子视图中找到了两个神秘的imageViews(我没有添加),它们总共加起来只有100个像素。事实证明,这两个图像实际上是滚动指示器,它会自动添加到滚动视图中。
我的解决方案是创建一个容器视图类,让我们称之为ContainerView,并在其中创建了scrollview。
在这个ContainerView内部,我重写方法addSubview和willRemoveSubview,如下所示:
- (void)addSubview:(UIView *)view {
[_addedSubviews addObject:view];
[_scrollView addSubview:view];
}
- (void)willRemoveSubview:(UIView *)subview {
[_addedSubviews removeObject:subview];
[_scrollView willRemoveSubview:subview];
}
现在您可以添加计算大小的方法。这次我们将循环遍历名为_addedSubviews的数组,而不是scrollviews子视图,因为我们知道_addedSubviews中的视图只是我们添加的视图。因此,我们将避免循环滚动指示器和诸如此类的东西: - )
最后只是循环并计算。
- (CGSize)desiredContentSize {
for(UIView *mySubviews in _addedSubviews) {
// Calculate size
}
// Return size
}
答案 1 :(得分:0)
Zath有一个有趣的解决方案。我碰到了类似的事情。
我想说你在切换到横向广告后没有更新你的contentSize,但无论如何,contentSize应该是相同的。
讽刺的是,我刚才遇到了相反的问题。但是,在学习超级视图后必须将autoresizesSubviews设置为yes,并确保所有4个超级视图具有相同的resizing属性,它最终保留“缓冲区”空间。调整后运行很多,最终你会得到你想要的东西,除非你希望前y点在大于0时保持在同一个位置。