在一个应用程序中为iPhone 4和iPhone 5开发

问题描述:

我已经离开iOS开发了一段时间了,而且我在路障。在一个应用程序中为iPhone 4和iPhone 5开发

我的一个应用程序有一个UIImageView图形,然后我有覆盖视觉效果的按钮。除了自动布局外,我能够使所有的工作都能正常工作。

如果我将我的笔尖设置为3.5并在3.5模式下运行模拟器,那么一切都很好。如果我在4.0模式下运行它,按钮全部移位。这也适用于与此相反的情况。

我不知道如何避开移动的按钮。有没有办法或者应该有两个笔尖?

+0

使用自动调整(IB右窗格中的标尺图标)。此外,要查看这两种尺寸的外观,请点击IB右下角的按钮,将视图扩大为两种屏幕尺寸的尺寸。 – 2013-03-25 23:38:20

+0

您只需要正确设置您的约束。我不能说你需要改变什么,而不知道你现在看到了什么,以及你想看到什么。当你进入大屏幕时,你想让所有的东西都散开吗? – rdelmar 2013-03-26 00:13:41

你可以按照这个好自动布局教程:http://www.raywenderlich.com/20881/beginning-auto-layout-part-1-of-2

开发在3.5英寸的屏幕,但支持的autoLayout。浏览视图中的每个项目并调整自动调整大小。 - 选择项目 - 在界面构建器中通过放大/缩小向下到白色箭头的位置。点击小按钮,看起来像一个H. - 这将允许您调整调整为

enter image description here

enter image description here

如果你不使用IB那么你会得到大小每个项目基于此的视图和布局。

我通常使用verticalOffset(NSInteger)的单个值和具有取决于界面元素的值的不同倍数的基础Y值。

CGRect screenBounds = [[UIScreen mainScreen] bounds]; 

if (screenBounds.size.height == 568) { // iPhone 5 
    verticalOffset = 20; 
} else { 
    verticalOffset = 0; 
} 

如果将来苹果发布iPhone 5.5具有768像素高度(我开玩笑..哈哈!)

你只需要在一个新的verticalOffset增值和观点将instamagically填写新的尺寸。

CGRect screenBounds = [[UIScreen mainScreen] bounds]; 

if (screenBounds.size.height == 768) { // iPhone 5.5 
    verticalOffset = 30; 
} else if (screenBounds.size.height == 568) { // iPhone 5 
    verticalOffset = 20; 
} else { 
    verticalOffset = 0; 
} 

为IB/iPhone的简单的方法如果你想支持旧版本的IOS关掉自动布局

Turn Off AutoLayout

,并关闭自动调整大小为最高值

enter image description here

布局IB视图为iPhone 5,当你使用iPhone 3.5英寸的所有界面元素将挤入3.5英寸大小(请务必留下足够的空白,当你摊开来在较高的尺寸)