1

在我的代码中,当 UI 方向更改为横向时,我正在增加contentSizea的高度,以便所有视图都适合那里并且用户可以滚动查看它。UIScrollView

在我的 XIB 中,我有

/UIView - 查看
  |- UIScrollView - 滚动视图
       |- 其他应该可以滚动的子视图

scrollView 与视图具有相同的大小,并且其自动调整大小掩码设置为在所有方向上调整大小。

我注意到滚动视图的高度尺寸远大于视图的高度。

例如,我有一些调试日志:

NSLog(@"%@ - self.view.frame=%@, self.view.bounds=%@", NSStringFromSelector(_cmd), NSStringFromCGRect(self.view.frame), NSStringFromCGRect(self.view.bounds));
NSLog(@"self.scrollView.frame=%@, self.scrollView.bounds=%@", NSStringFromCGRect(self.scrollView.frame), NSStringFromCGRect(self.scrollView.bounds));

它打印

willAnimateRotationToInterfaceOrientation:duration: - self.view.frame={{0, 0}, {480, 219}}, self.view.bounds={{0, 0}, {480, 219}}
self.scrollView.frame={{0, 0}, {480, 399}}, self.scrollView.bounds={{0, 0}, {480, 399}}

即使在 Xcode IB 中,它也看起来像:

UIScrollView 与 UIView 的高度

为什么UIScrollView与视图的大小不同?

谢谢


更新

奇怪的是,当我将 scrollView 的高度设置为 460(iPhone 纵向)时,Xcode/IB 显示 scrollView 小于其父视图(也设置了相同的尺寸): 在此处输入图像描述

但是现在我创建了一个带有 1 XIB 的测试项目,它只有 1 UIView,在其中添加了 1UIScrollView并且看起来正常,UIScrollView' 的高度与UIView' 匹配。

所以也许我以某种方式弄乱了 XIB 并且 Xcode 不能很好地处理它。

无论如何,我正在以编程方式设置尺寸(以处理旋转、UI 组合更改等)并且它按预期工作。由于这是我的第一个 iOS 项目,我只是想知道UIScrollView. 显然不是 :-)

谢谢你们的评论。

4

2 回答 2

1

首先,将 UIScrollView 的边界设置为与其 superview 的 100% 相同。接下来确保它的 superview 的 autoresizesSubviews 属性设置为 YES。然后一切都会正常工作。此外,“willAnimate...”表示旋转操作尚未完成,您应该在“didRotate”回调中检查新帧。

于 2012-07-06T08:23:53.380 回答
-1

我已经创建了一个带有 1 个只有 1 个 UIView 的 XIB 的测试项目,在那里添加了 1 个 UIScrollView,它看起来很正常,UIScrollView 的高度与 UIView 的高度匹配。

所以也许我以某种方式弄乱了 XIB 并且 Xcode 不能很好地处理它。

谢谢你给我的意见。

于 2012-07-07T14:09:49.917 回答