我正在尝试以编程方式更改 UIView 的布局,而不是使用自动布局,因为我正在尝试为 iOS 4 及更高版本部署此应用程序。我基本上将屏幕高度设置为 455(iPhone 5)(我知道实际屏幕尺寸是 568 点,但我在底部有一个标签栏,所以我假设 IB 中显示的尺寸已经考虑到了这一点)。我记录了所有按钮和标签相对于较长屏幕尺寸的来源,并以编程方式将它们更改为我喜欢的方式。问题是,一些按钮和标签现在从屏幕上消失了,所以我认为我必须执行某种转换以将它们保持在界限内,但我不确定是什么。请参阅下面的图片:
调用我的 initMethod 之前的图像以更改按钮和标签原点 调用我的 initMethod 以更改 XCode 中旧屏幕尺寸 的原点 视图属性之后的图像 这就是我希望视图的外观。我移动了按钮并记录了每个按钮的起源。 我在 viewWillAppear 中的 init 方法的图片。注意标签的框架是如何为零的。 这是我使用的代码:
-(void)initView
{
CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 480) {
//iphone 4,4s
//done
}else if(screenBounds.size.height == 568) {
//iphone 5
CGRect frame;
//Static Professor label
frame = [staticProfessorLabel frame];
frame.origin.x = 48;
frame.origin.y = 218;
[staticProfessorLabel setFrame:frame];
//Professor Label
frame = [professorLabel frame];
frame.origin.x = 192;
frame.origin.y = 218;
[professorLabel setFrame:frame];
//show button
frame = [showProfessorButton frame];
frame.origin.x = 67;
frame.origin.y = 258;
[showProfessorButton setFrame:frame];
//clear proff button
frame = [clearProfessor frame];
frame.origin.x = 240;
frame.origin.y = 258;
//note label
frame = [bottomNote frame];
frame.origin.x = 160;
frame.origin.y = 310;
[bottomNote setFrame:frame];
//search button
frame = [searchButton frame];
frame.origin.x = 158;
frame.origin.y = 424;
[searchButton setFrame:frame];
//spinner
frame = [actIndicator frame];
frame.origin.x = 266;
frame.origin.y = 424;
[actIndicator setFrame:frame];
}
}
另外,我在 viewDidAppear 方法中调用它是因为当我在 viewDidLoad 中调用它时,没有一个按钮和标签给我一个有效的框架(我猜它们还没有初始化)。