我有一个 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?