UIViews 在横向模式下显示在错误的位置

Posted

技术标签:

【中文标题】UIViews 在横向模式下显示在错误的位置【英文标题】:UIViews display at wrong location in landscape mode 【发布时间】:2010-09-07 20:11:09 【问题描述】:

我正在开发一个图表应用程序,它将框显示为更大视图中的子视图。用户可以移动盒子。我使用核心数据将这些框的位置保存到 sqlite 数据库中,方法是保持高度、宽度、x 和 y(左上角的)。当我打开一个图表时,我正在从数据库中读取这些值并使用它们来设置主视图中子视图的框架。

在纵向模式下,这可以正常工作,并且框会重新定位在显示屏上的正确位置。但是,当我旋转到横向,或者以横向启动应用程序并打开图表时,框的位置是错误的。

我跟踪了代码,可以看到正确的值从持久存储中返回并用于正确设置框架。但是,一旦子视图的 UIView 出现在屏幕上,它就会被定位在不同的位置(清晰可见并通过检查视图框架中的值来确认)。

现在奇怪的是,x 坐标不是固定的像素偏移,而是总是比用于创建帧的值大 8.5%,而 y 值总是小 9.1%。

有没有人解释为什么会这样以及我如何解决这个问题?

如果它提供任何线索,则主视图位于 UIScrollView 内。

【问题讨论】:

【参考方案1】:

好的,我找到了答案。我需要在 UIScrollView 上将 Autoresize Subviews 设置为 false。完成后(通过取消选中 IB 中的相应框)一切似乎都工作正常。

【讨论】:

以上是关于UIViews 在横向模式下显示在错误的位置的主要内容,如果未能解决你的问题,请参考以下文章

UIView 在横向模式下被切断

IOS Customkeyboard在横向模式下大小错误

加载不同的纵向/横向 UIViews

iPhone 6 Plus 横向模式下带有标签和固定元素的奇怪错误

ios7 iPad横向模式下的错误视图大小

如何在 AVPlayer 中强制横向模式?