iPhone6和6Plus缩放显示的Autolayout问题

4
我在我的storyboard中使用了自动布局和尺寸类别,并且有一个按钮与我的视图控制器底部有垂直约束。然而,当我在我的iPhone6 Plus上以“缩放”模式运行我的应用程序时(设置 - 显示与亮度 - 显示缩放 - 缩放),按钮不会重新定位。
这是一个bug吗?如果是,最好的解决方法是什么?我可以找出应用程序是否处于缩放模式并相应地更改约束吗?
还是我在做其他错误?

有关视图控制器的代码吗?你能截个屏吗? - jalone
谢谢@jalone,我找到了问题所在。不过这又引发了另一个问题http://stackoverflow.com/questions/34618527/uiimageview-height-on-iphone-6-and-iphone-6-plus-zoomed-display-mode,如果你碰巧有任何见解,请分享一下。 - m.y
2个回答

7
基本上,放大模式下的 iPhone 6+ 就是 iPhone 6。而放大模式下的 iPhone 6 则相当于 iPhone 5。你不需要做出任何改变,只需确保你的代码能在 iPhone 5 和 6 上运行即可。
同时,请勿尝试查找你正在运行的手机型号。例如,有些设备信息可以用来确定你正在运行某个 iPhone 型号 - 如果你使用这些方法,则你的代码可能会认为它正在运行 iPhone 6+,而实际上是被放大了,导致一切都错了。只需检查屏幕尺寸(并确保你也检查旋转)即可。

感谢@gnasher729,问题只出现在缩放视图中,请参见我的答案。虽然这导致了另一个问题,我已经在这里提问http://stackoverflow.com/questions/34618527/uiimageview-height-on-iphone-6-and-iphone-6-plus-zoomed-display-mode,如果您也有任何见解的话。 - m.y
对于遇到和我一样的问题的人,如果你使用SDVersion,请确保调用resolutionSize而不是deviceSize,如果你要进行一些手动计算或直接针对iPhone 5进行操作。 - Iulian Onofrei

1
我找到的解决方案是给我的容器视图添加约束条件。有一些代码是根据背景图片以编程方式设置容器视图框架。
无论是在缩放模式还是标准显示模式下,实际背景图像的大小都不会改变,即使它被缩放后全部适合屏幕。因此,我的容器框架比预期的要大,这就是为什么我的按钮几乎超出了设备屏幕的原因。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接