为两种 iPhone 屏幕尺寸编写程序

3

可能是重复问题:
iOS 6应用程序 - 如何处理iPhone 5屏幕尺寸?
是否可以为iPhone4和iPhone5使用相同的xib文件?

我一直在制作我的应用程序,这段时间一直是针对iPhone 5屏幕大小进行编码。我忘记了iPhone 4,我甚至有一个,太蠢了... 我该如何解决呢?现在我已经为iPhone 5编写了代码,如何让我的代码适用于两种屏幕大小呢?

以下是我遇到的问题的模拟图。在第二张图片中,滑块被截断显示在较小的设备上。

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


1
你尝试过简单地使用3.5英寸模拟器并查看发生了什么吗?;-) - LombaX
1
这里有类似的内容:https://dev59.com/imcs5IYBdhLWcg3wmlWk 也许是重复的问题? - woz
1
我觉得我们有一个重复的问题:https://dev59.com/1mct5IYBdhLWcg3wCZIT。我会标记它为重复。 - woz
是的,这是一个难题。你能发布一些特定问题的截图吗? - woz
这两张图片是一样的。 - woz
显示剩余5条评论
2个回答

1
我能给你的最好建议是尝试在XIB上使用自动调整大小/自动对齐设置。这是避免为每个设备设置单独视图的最佳选择。
在你提供的示例中,你可以使用Xcode中类似于以下的设置:

enter image description here

将它们调整到滑块的原点位于屏幕底部。尝试调整每个UI元素的设置,直到一切看起来正确。


非常感谢!我已经调整了那些设置,目前它们已经起到了作用。我真的很感激! - user1813278

0

你能做什么严格取决于你如何定义你的接口以及你的用户界面是什么样子。

如果你在Interface Builder/Storyboard中创建了你的用户界面,你可以尝试查看所有控件和视图度量设置。在这方面有两个主要的提示:

  1. 有可能通过仔细选择自动调整行为来获得一些改进。对于某些元素,您可能需要修复与屏幕边缘的距离,对于其他元素,您可能需要设置灵活的宽度和高度:这严重取决于您的用户界面。

  2. 控制相关UI元素的正确定位的一个好技巧是将它们分组到一个父视图中,然后通过保留这些元素的相对位置来移动或缩放它(分配灵活的宽度或高度)。

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

我在我的应用程序中使用了这两种技术,既支持iPhone4/5,也支持iPhone/iPad。 无论如何,这是一些工作。这可能是很多工作,也可能只是一些工作,这取决于你的应用程序用户界面出了什么问题。

如果您正在寻找一种自动修复此问题的方法,请尝试将缩放变换应用于您的主视图(例如,在您的应用代理中):
window.rootViewController.view.transform = CGAffineTransformMakeScale(1.0, 0.84);

我不确定这是否会起作用,但在最好的情况下,我认为更适合有一种感觉,即没有自动修复可能。


如果我在理解这个过程时显得有些慢,我很抱歉...因为我是一名相对较新的开发人员,当这个新的屏幕分辨率出现时,我真的感到困惑。不是为更大的屏幕开发,而是缩小适应更小的屏幕,以迎合iPhone 4/4S市场和iPhone 5市场的需求。 - user1813278
不用担心,慢慢来。你需要尝试几种方法。也许你可以试试“转换”方法作为开端,你永远不知道它是否适用于特定的用户界面。 - sergio
很抱歉,我不知道转换的方法。我从未处理过屏幕方向和大小。文档中有吗? - user1813278

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