做一些 iPhone 开发,让应用程序运行良好。但是,我有一个 UIScrollView,它可以自动调整内容和 contentSize,效果很好,除了当我旋转到横向 View 时,它在滚动高度上总是有 100 左右的额外像素。我不希望用户滚动到内容太远。
有没有其他人遇到过这个问题或知道解决方法?
提前致谢,
迈克尔
最佳答案
我遇到了同样的问题。在我的例子中,我循环遍历了一个 UIScrollView,试图动态计算它的 contentSize。在遍历 subview 时,我在 subview 中发现了两个神秘的 imageView(不是我添加的),它们加起来刚好是 100 像素。原来这两张图片实际上是自动添加到scrollview的scroll indicator。
我的解决方案是创建一个容器 View 类,我们称它为 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 subview ,因为我们知道 _addedSubviews 中的 View 只是我们添加的 View 。正因为如此,我们将避免循环滚动指示器和诸如此类的东西:-)
最后只是循环计算。
- (CGSize)desiredContentSize {
for(UIView *mySubviews in _addedSubviews) {
// Calculate size
}
// Return size
}
关于iPhone UIScrollView ContentSize 在旋转/转换为横向时有额外的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2695547/