[英]Change UIView layout programmatically for iPhone 5
我正在尝试以编程方式而不是通过使用“自动布局”来更改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中调用它时,没有按钮和标签给我有效的框架(我想它们尚未初始化)。
您的硬编码坐标是完全错误的。 只需仔细检查您的价值观即可。
例如, bottomNote
从x
160开始,这显然在右边。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.