如何在Interface Builder中为3.5“和4”Retina定位视图?

我想定位一个UIView,使它出现在3.5英寸和4英寸Retina屏幕的中央。 做这个的最好方式是什么? 如果我关闭所有自动调整条,我希望它与屏幕中心对齐,但这似乎不会发生。

我很高兴使用新的Autolayout,但我不知道怎么做才能做到这一点。

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

  1. 为了实现无缝的iOS4兼容性,首先将顶视图尺寸设置为Retina 3.5尺寸。

  2. 删除顶视图的size参数并将其设置为“none”。 您现在应该具有正确大小的主视图,但没有固定的设置大小选项。

  3. 在“尺寸检查器”选项卡下的顶视图中垂直打开所有自动resize。

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

    • 选择视图并转到“大小检查器”选项卡
    • 选择排列(垂直居中或对齐)
    • 如果要将其居中,请在“自动resize”框中删除两个对齐标记。 如果您希望它“粘滞”,请选择其中一个,如果您希望它填充父级,请选择它们。
    • 通过突出显示或取消突出显示垂直“双向箭头”,选择是否应相对resize
    • 确保所有元素都位于3.5英寸视图中的预定位置 – 这对于在iOS4上工作至关重要。
  5. 保存更改。 选择顶视图并选择尺寸:“Retina 4 Full Screen”,检查您的自动调整是否成功。 执行此操作时,您的视图应该看起来像您的预期结果。

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

这也适用于iOS4,因为视图的大小已经适用于Retina 3.5,因此不会对较旧的屏幕尺寸使用自动resize。

在某些情况下,不可能为所有元素获得精确正确的尺寸/定位。 在这些情况下,您需要以编程方式更改4“屏幕大小的视图大小位置。

要使用autolayout在IB的父(容器)视图中居中视图:

  • 选择你的视图
  • 转到菜单,然后选择编辑器 – >对齐 – >水平/垂直中心在容器中选项

但是,只有当您支持iOS 6及更高版本时才能使用自动布局,如果您定位早期的操作系统版本,则必须使用其他方法(例如,使用Eric建议的代码设置居中视图)

以下是您手动执行此操作的方法(不使用AutoLayout):

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];