3

我有一个 UIScrollView,它以纵向方面开始,随后(在设备旋转之后)移动到另一个横向方面的帧。

因此,内容视图(UIScrollView 内的 UIView)被更新,我设置了 UIScrollview 的 contentSize。

问题是 - 旋转后 - UIScrollView 有一个新框架、新内容和新 contentSize 但用户可以在其中滑动的区域仍然表现得好像它是原始框架/内容。

图 1 显示了原始方面 / 图 2 显示了新的方面,其中奇数区域可供用户滑动手势使用。

滚动视图的原始方面 新方面

正如您可能期望的那样,我已经摆弄了滚动视图中的许多设置,例如边界等,但迄今为止还没有“修复”这种行为。

任何关于为什么会发生这种行为和/或如何将用户交互区域设置为滚动视图的框架/边界的见解将不胜感激。

编辑2:

此层次结构中有 3 个视图
Lanscape
mainView Frame {0,0,1024,748}
resultsView Frame {633,90,361,677}
scrollView Frame {20,60,340,595}

纵向
主视图框架 {0,0,532,1240} <--- 哇哦,我期待.... {0,0,768,1004}
结果视图框架 {0,659,768,345}
滚动视图框架 {0,70,768,280}

在这一点上,我进入了项目中的每个笔尖,并确保关闭了自动调整大小,并且我还用不同的数字标记了每个视图,以便在检查帧时我可以确定我是什么看着。

堆栈中的顶级视图是自动调整大小,现在关闭它,我得到了肖像结果..

主视图框架 {0,0,768,1004} ..... 是的!获胜.....
结果视图框架 {0,659,768,345}
滚动视图框架 {0,70,768,280}

编辑1:

将调整大小掩码设置为下面的注释会减小滚动视图的可见大小以匹配交互区域 - 因此看起来滚动视图确实认为它的框架只是那个大小(768 看起来像 468 左右)。增加框架的宽度确实会增加滚动视图的大小,但是全宽只有768 像素,那么为什么 768 宽的框架看起来像 468,而 686 的框架看起来像 568?

4

2 回答 2

4

听起来您的滚动视图的超级视图没有正确调整大小。您可以通过记录 [myScrollView superview] 并查看该视图是否按预期调整大小来验证这一点。

如果超级视图没有调整大小,那么它不会向下传递到您的滚动视图,这解释了您所看到的行为。(这也解释了为什么当你设置为自动调整掩码时它会调整大小。)

于 2011-12-03T15:47:43.120 回答
2

您是否尝试过在对象上使用以下方法?

[_yourView setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
于 2011-12-01T16:17:20.503 回答