为iPhone屏幕尺寸编程

时间:2012-11-09 20:04:45

标签: iphone xcode screen

  

可能重复:
  iOS 6 apps - how to deal with iPhone 5 screen size?
  Same xib for iPhone4 and iPhone5 possible?

我一直在制作我的应用程序,而这一直是iPhone 5的屏幕尺寸。我忘了关于iPhone 4的所有内容,我甚至没有它,愚蠢的我......我怎么会这样做?现在我已经为iPhone 5编码了,我的代码如何适用于两种屏幕尺寸?

这是我遇到的那种问题的模型。在第二张图片中,滑块在较小的设备上切断屏幕

4 inch screen with all interface elements 3.5 inch screen with interface cut off

2 个答案:

答案 0 :(得分:1)

我能给你的最好的建议就是在你的XIB上尝试自动调整/自动对齐设置。这是避免为每个设备设置单独视图的最佳选择。

在您给出的示例中,您可以使用Xcode中的设置:

enter image description here

调整它们,使滑块的原点位于屏幕的底部。使用每个UI元素的设置,直到所有内容都正确。

答案 1 :(得分:0)

您可以严格执行的操作取决于您定义界面的方式以及UI的外观。

如果您在Interface Builder / Storyboard中创建了UI,则可以尝试查看所有控件和视图指标设置。这方面有两个主要暗示:

  1. 通过仔细选择自动调整行为,您可能会得到一些改进。对于某些元素,您可能需要修复与屏幕边缘的距离,对于其他元素,您可能需要设置灵活的宽度和高度:它在很大程度上取决于您的UI。

  2. 控制相关UI元素正确定位的一项好方法是将它们分组为超视图,然后您可以通过保留这些元素的相对位置来替换或缩放(赋予其灵活的宽度或高度)。

  3. 如果您在代码中定义了界面,则应该检查定义所有位置和大小的方式,而不是将它们设置为绝对值,您可以将它们重新编码为屏幕大小的百分比。

    我在我的应用程序中使用了这两种技术,用于支持iPhone4 / 5和iPhone / iPad。 无论如何,这是一些工作。这可能是很多工作,或者只是一些工作,取决于你的应用UI中的坏事。

    如果您正在寻找一种自动修复方法,请尝试将缩放变换应用于主视图(例如,在您的应用代理中):

    window.rootViewController.view.transform = CGAffineTransformMakeScale(1.0, 0.84);
    

    我不确定这是否会起作用,但在最好的情况下,我认为这样可以更好地理解不能自动修复的事实。