我在视图控制器的主视图中有以下两种视图:
我的要求非常简单,我想根据某些条件调整我的view2以占用完整视图。目前,我不关心这个条件,只想在我的viewDidLoad
内调整view2的大小。这是我正在使用的代码。
CGRect newFrame = self.view2.frame;
[self.view2 removeFromSuperview];
[self.view1 removeFromSuperview];
newFrame.size.width =703;// width of main view
newFrame.size.height =632;// height of main view
newFrame.origin.x=0;
newFrame.origin.y=0;
[self.view2 setFrame:newFrame];
[self.view addSubview:self.view2];
在上面的代码中,view
是视图控制器主视图的出口。 view2
是我的view2的出口,view1
是上面照片中的view1。我的view1的背景颜色为黑色,view2的背景颜色为红色。该应用程序工作正常没有上面的调整大小代码,但当我运行上面的调整大小代码时,我得到一个空屏幕。
有人请帮助我找出我的错误。
提前致谢!
答案 0 :(得分:1)
您不应尝试在viewDidLoad()中设置任何子视图的框架。您将无法获得从viewDidLoad()
中的故事板设置的正确帧大小。在viewDidLoad()中尝试NSLog(NSStringFromCGRect(self.view1.frame)
。在viewDidLayoutSubviews()
。
在viewDidLayoutSubviews中尝试此操作:
CGRect newFrame = view2.frame
NSLog(NSStringFromCGRect(newFrame))
newFrame.origin.x = CGFloat(0.0)
newFrame.origin.y = CGFloat(0.0)
newFrame.size.width = CGFloat(703.0)
newFrame.size.height = CGFloat(632.0)
view2.frame = newFrame
NSLog(NSStringFromCGRect(newFrame))
答案 1 :(得分:0)
也许,不需要从主视图中删除视图。如果你想调整视图的大小,只需尝试这样而不是所有代码。
-(void)viewDidLayoutSubviews{
self.view2.frame = CGRectMake(0, 0, 320, 400);
}
编辑:
使用上述方法中的代码而不是viewDidLoad。