iPhone 6和iPhone 6加宽度问题

时间:2015-02-02 05:39:50

标签: ios objective-c storyboard iphone-6

现在我正在尝试让我的应用与iPhone 6/6 +兼容。问题是,我有4个按钮水平对齐在一行。每个的宽度是80分(在故事板中设置)。这对iPhone4 / 5 / 5s来说很好。现在,当我在iPhone 6/6 +上模拟应用程序时,您可以看到第3和第4个按钮之间有2个像素的空间。我没有使用自动布局。我知道iPhone 6 plus的宽度是:1242 x 2208px。问题是1242不能除以4。

enter image description here

问题在于我使用以下代码:

CGRect screenBounds = [[UIScreen mainScreen] bounds];
CGFloat screenScale = [[UIScreen mainScreen] scale];
CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale);
CGFloat screenWidth = screenSize.width;

实际上screenWidth是640。

有人知道如何解决这个问题吗?非常感谢提前。

1 个答案:

答案 0 :(得分:2)

你应该使用点,而不是像素,因此iPhone 6 Plus的宽度(在纵向模式下)为414,iPhone 6为375。

在这种情况下划分屏幕时,即数学没有准确计算出来的时候,你要确保最小的空间是相等的(在这种情况下是分隔符),并且大面积略有不同的大小(由一点等)。这是因为(通常)眼睛能够注意到1到2点之间的差异,但不是102和103点之间的差异。

您可能希望使用自动布局设置此视图,而不是自己进行数学运算。这就是它的目的。

关于变量screenWidth640的第二点,请确保您的应用不是兼容模式。如果是,则6和6+都具有两个返回维度,就好像它们是5s一样,这可以解释640数字。添加LaunchScreen.xib以确保您的应用以真正的屏幕分辨率运行而不是缩放。见这里:How to enable native resolution for apps on iPhone 6 and 6 Plus?