我想定位一个 UIView,使其出现在 3.5 英寸和 4 英寸 Retina 屏幕的中心。做这个的最好方式是什么?如果我关闭所有 Autosizing 条,我希望它与屏幕中心对齐,但这似乎不会发生。
我很高兴使用新的 Autolayout,但我也不知道如何让它做到这一点。
我想定位一个 UIView,使其出现在 3.5 英寸和 4 英寸 Retina 屏幕的中心。做这个的最好方式是什么?如果我关闭所有 Autosizing 条,我希望它与屏幕中心对齐,但这似乎不会发生。
我很高兴使用新的 Autolayout,但我也不知道如何让它做到这一点。
为您的 XIB 执行以下步骤,您应该为您的视图获得正确的调整大小:
为了无缝兼容 iOS4,首先将顶视图大小设置为 Retina 3.5 大小。
移除顶视图的尺寸参数并将其设置为“无”。您现在应该有一个大小正确但没有固定设置大小选项的主视图。
在“尺寸检查器”选项卡下为顶视图打开所有垂直自动调整大小。
对于每个子视图,请执行以下操作
保存您的更改。通过选择顶视图并选择大小来检查您的自动调整大小是否成功:“Retina 4 Full Screen”。执行此操作时,您的视图应该看起来像您的预期结果。
撤消 5 中的更改(使 xib 中的视图再次具有 3.5 大小,但大小选项设置为“无”,保存并运行您的应用程序。
这也适用于 iOS4,因为视图的大小已经针对 Retina 3.5 进行了调整,因此旧屏幕大小没有使用自动调整大小。
在某些情况下,不可能为所有元素获得正确的尺寸/位置。在这些情况下,您需要以编程方式更改 4" 屏幕尺寸的视图尺寸位置。
在 IB 中使用自动布局在其父(容器)视图中居中视图:
但是,仅当您支持 iOS 6 及更高版本时才能使用自动布局,如果您针对较早的操作系统版本,则必须使用其他方法(例如,使用 Eric 建议的代码设置居中视图)
以下是您手动操作的方法(不使用自动布局):
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];