Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试支持3.5英寸和4英寸iPhone屏幕时出现的问题_Iphone_Ios_Cocoa Touch_Interface Builder_Iphone 5 - Fatal编程技术网

尝试支持3.5英寸和4英寸iPhone屏幕时出现的问题

尝试支持3.5英寸和4英寸iPhone屏幕时出现的问题,iphone,ios,cocoa-touch,interface-builder,iphone-5,Iphone,Ios,Cocoa Touch,Interface Builder,Iphone 5,我开始在iPhone5上开发一个新的应用程序,现在我还必须增加对3.5英寸屏幕的支持。正如您所知,4屏幕上的内容空间比3.5屏幕上的内容空间大 当我在3.5的屏幕上运行应用程序时,整个布局都乱七八糟。是否可以在4英寸屏幕上正常使用布局,但在3.5英寸屏幕上运行时,将布局放置在滚动视图中 我的想法是滚动页面,而不是完全重新设计。我怎样才能做到这一点 (或者可以分别为3.5和4英寸屏幕设计布局)?完全可以为3.5和4英寸屏幕设计完全不同的布局。您只需添加以下内容: #define IS_IPHONE

我开始在iPhone5上开发一个新的应用程序,现在我还必须增加对3.5英寸屏幕的支持。正如您所知,4屏幕上的内容空间比3.5屏幕上的内容空间大

当我在3.5的屏幕上运行应用程序时,整个布局都乱七八糟。是否可以在4英寸屏幕上正常使用布局,但在3.5英寸屏幕上运行时,将布局放置在滚动视图中

我的想法是滚动页面,而不是完全重新设计。我怎样才能做到这一点


(或者可以分别为3.5和4英寸屏幕设计布局)?

完全可以为3.5和4英寸屏幕设计完全不同的布局。您只需添加以下内容:

#define IS_IPHONE_5 (((double)[[UIScreen mainScreen] bounds].size.height) == ((double)568))
并使用if(IS_IPHONE_5){do this…}else{do that…}

但是

这只能作为最后手段,因为它需要大量的手动/额外编码。理想情况下,您应该创建视图,使其自动为两个屏幕进行自我调整。您可以通过两种方式实现:

1) 使用自动布局,即在每个视图元素上和之间应用约束。(我个人不太喜欢)


2) 在没有自动布局的情况下,通过在每个视图元素上应用自动调整大小遮罩。(通过切换故事板中的形状因子按钮进行检查)

为此,您需要使用默认名称添加尺寸为640*1136的图像-568h@2x.png并添加到图像文件夹,然后将图像添加到目标General-AppIcons中


它非常简单,对我来说很有效,我不建议使用ScrollView,因为如果你使用这种方法,那么会有很多UI元素的重新构造

如果您包含的元素很少,那么我建议您使用自动布局或自动调整遮罩,设置约束,使其根据视图高度展开和收缩

如果您的视图包含许多约束冲突的UI元素,则只在应用程序中查找与同一类对应的两个XIb文件(在identity Inspector中将您的类名设置为两个XIN),如果您使用的是故事板,则只需复制当前视图并针对iPhone 5进行调整,并为每个视图设置不同的故事板标识符,然后根据设备高度分别加载视图,如

如果([[UIScreen mainSceen]bounds].size.height>480){

//加载iPhone5视图 }否则{

//加载iPhone4视图
}

您是否正确设置了struts或autolayout?那么您应该先这样做。我正在使用autolayout和constraints,但这不会改变事实,我可以为两种屏幕大小定义两种布局。我建议您使用autolayout。理想情况下,这是正确完成任务的方法。为此,请尝试避免滚动视图。这是一个关于自动布局的非常好的教程。但是你可以在谷歌上找到更多。一开始很难理解,但当你仔细阅读时,你会发现它非常方便。你能进一步阐述一下要点吗。我希望更清楚。