无论我尝试什么,我的视图控制器都不会出现在屏幕外(因为我想要,因为我有一个处理程序(菜单),可以将动画从屏幕外显示到屏幕上。在实现(从其他帖子)我可以在它出现之前不改变视图框架,使用这种方法是有意义的:
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
//self.view.frame = CGRectInset(self.view.frame, 100, 50);
self.view.frame = CGRectMake(50, 50, 50, 50);
}
但是,它仍然完全呈现在屏幕上,因为任何标准视图控制器都会(0,0,宽度,高度)
如何解决?
答案 0 :(得分:7)
您使用方法}
void computer::handleMessage(cMessage *msg)
{
}
:或willLayoutSubviews
调用以通知视图控制器其视图即将布局 当视图的边界发生变化时,视图会调整其子视图的位置。
因此,不会在视图中显示,而是覆盖了willLayoutSubviews:
viewDidLayoutSubviews
答案 1 :(得分:0)
您是否考虑将所有视图添加到另一个视图,用作容器视图,然后将该视图添加到视图控制器的视图中?然后,您就可以在容器视图出现之前自由定位它。
答案 2 :(得分:0)
您可以访问ViewControllers视图属性并在loadView()
中进行设置,该属性将仅设置一次,因此不会弄乱任何自定义动画。
当请求其视图属性但当前为nil时,视图控制器调用此方法。此方法加载或创建一个视图,并将其分配给view属性。
因为viewWillLayoutSubviews()
将在每次布置子视图时设置框架。
override func loadView() {
super.loadView()
self.view.frame = CGRect(x: self.view.bounds.origin.x,
y: self.view.bounds.origin.y,
width: self.view.bounds.width,
height: self.view.bounds.height * 0.8
}