现在我正在尝试让我的应用与iPhone 6/6 +兼容。问题是,我有4个按钮水平对齐在一行。每个的宽度是80分(在故事板中设置)。这对iPhone4 / 5 / 5s来说很好。现在,当我在iPhone 6/6 +上模拟应用程序时,您可以看到第3和第4个按钮之间有2个像素的空间。我没有使用自动布局。我知道iPhone 6 plus的宽度是:1242 x 2208px。问题是1242不能除以4。
问题在于我使用以下代码:
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。
有人知道如何解决这个问题吗?非常感谢提前。
答案 0 :(得分:2)
你应该使用点,而不是像素,因此iPhone 6 Plus的宽度(在纵向模式下)为414,iPhone 6为375。
在这种情况下划分屏幕时,即数学没有准确计算出来的时候,你要确保最小的空间是相等的(在这种情况下是分隔符),并且大面积略有不同的大小(由一点等)。这是因为(通常)眼睛能够注意到1到2点之间的差异,但不是102和103点之间的差异。
您可能希望使用自动布局设置此视图,而不是自己进行数学运算。这就是它的目的。
关于变量screenWidth
为640
的第二点,请确保您的应用不是兼容模式。如果是,则6和6+都具有两个返回维度,就好像它们是5s一样,这可以解释640
数字。添加LaunchScreen.xib
以确保您的应用以真正的屏幕分辨率运行而不是缩放。见这里:How to enable native resolution for apps on iPhone 6 and 6 Plus?