Ios 如何在Interface Builder中为3.5”;和4”;视网膜?

Ios 如何在Interface Builder中为3.5”;和4”;视网膜?,ios,xcode,interface-builder,alignment,autolayout,Ios,Xcode,Interface Builder,Alignment,Autolayout,我想定位UIView,使其在3.5英寸和4英寸视网膜屏幕的中心显示。最好的方法是什么?如果我关闭所有的自动调整条,我希望它与屏幕中心对齐,但这似乎没有发生 我很高兴使用新的Autolayout,但我也不知道如何让它做到这一点。以下是手动操作的方法(没有Autolayout): 要使用autolayout在IB的父视图(容器)视图中居中显示视图,请执行以下操作: 选择您的视图 转到菜单并选择编辑器->对齐->容器中的水平/垂直中心选项 但是,只有当您支持iOS 6及更高版本时,才能使用auto

我想定位UIView,使其在3.5英寸和4英寸视网膜屏幕的中心显示。最好的方法是什么?如果我关闭所有的自动调整条,我希望它与屏幕中心对齐,但这似乎没有发生


我很高兴使用新的Autolayout,但我也不知道如何让它做到这一点。

以下是手动操作的方法(没有Autolayout):


要使用autolayout在IB的父视图(容器)视图中居中显示视图,请执行以下操作:

  • 选择您的视图
  • 转到菜单并选择编辑器->对齐->容器中的水平/垂直中心选项

但是,只有当您支持iOS 6及更高版本时,才能使用autolayout,如果您针对的是早期的OS版本,则必须使用其他方法(例如,使用Eric建议的代码设置居中视图)

按照以下步骤操作您的XIB,并且您应该获得正确的视图大小调整:

  • 为了实现无缝iOS4兼容性,首先将俯视图大小设置为Retina 3.5大小

  • 删除俯视图的尺寸参数并将其设置为“无”。现在应该有一个大小正确但没有固定大小选项的主视图

  • 在“尺寸检查器”选项卡下为俯视图启用所有垂直自动调整大小

  • 对于每个子视图,请执行以下操作

    • 选择视图并转到“尺寸检查器”选项卡
    • 选择排列(垂直居中或对齐)
    • 如果要使其居中,请删除“自动调整大小”框中的两个对齐标记。如果要“粘滞”,请选择其中一个,如果要填充父对象,请选择两者
    • 通过高亮显示或取消高亮显示垂直“双箭头”,选择是否应相对调整其大小
    • 在这一点上,确保所有元素都位于您3.5英寸视图中的预期位置-这对于it在iOS4上工作至关重要
  • 保存您的更改。通过选择俯视图并选择大小:“视网膜4全屏”,检查您的自动调整大小是否成功。执行此操作时,您的视图应与预期结果一致

  • 撤消5中的更改(以便xib中的视图再次具有3.5大小,但大小选项设置为“无”),保存并运行应用程序

  • 这也适用于iOS4,因为视图的大小已经适用于retina3.5,因此对于较旧的屏幕大小不使用自动调整大小


    在某些情况下,不可能为所有元素获得准确的大小/位置。在这些情况下,您需要通过编程方式更改4“屏幕大小。

    我知道如何在代码中实现这一点,谢谢,但是因为我有很多nib文件,我更愿意在Interface Builder中学习如何实现。谢谢!不过有一件事我忘了提,我的应用程序是针对iOS 4及以上版本的。这样可以吗?我已经将部署目标设置为4.0,并且当我将其编译到iOS 6设备时,它不会抱怨。。。不幸的是,这在我的iPhone 4S上不起作用。它正确地显示在iPod touch 5G上,但当我在我的iPhone(3.5英寸显示屏)上观看时,视图与屏幕底部对齐。您必须首先考虑3.5英寸的视图,然后设置自动调整选项,使其正确地延伸到4英寸“。您可以测试它,以便它在界面生成器中正常工作。请参阅我如何操作的答案。抱歉,我今天没有机会尝试此功能…我很快会让您知道我是如何操作的。谢谢!我假设此方法是在自动布局关闭的情况下使用的?恐怕我仍停留在第3点上。“视图”在哪里?”tab?所有自动调整尺寸的参数都在尺寸检查器中。我对此投了赞成票,因为您关于为3.5英寸屏幕布局所有内容的观点是这里最重要的一点。然而,将尺寸参数更改为“无”对我来说似乎没有任何区别。我还可以很高兴地在3.5英寸和4英寸之间切换"检查其是否正常工作的大小。使用旧的自动调整大小方法,新iPhone 5的调整参数工作得更好,这似乎很奇怪!很抱歉反应太晚。是的,我刚刚看到我读错了,应该是第3点中的大小检查器。切换为“无”可能没有效果,除非您可以更改vie的大小在Interface Builder中使用w。但对我来说,不将其锁定为固定大小是有意义的。我希望您最终能使其正常工作=)
    int screenWidth = [[UIScreen mainScreen] applicationFrame].size.height;
    int screenHeight = [[UIScreen mainScreen] applicationFrame].size.width;
    
    UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,200)];
    [myView setCenter:CGPointMake(screenWidth/2, screenHeight/2)];
    
    [self.view addSubview:myView];