我有一个项目,我正在用另一个视图切换一个视图:
- (IBAction)onClick:(id)sender
{
ViewControllerSecond * sc=[[ViewControllerSecond alloc]initWithNibName:@"ViewControllerSecond" bundle:nil];
[UIView transitionFromView:self.view toView:sc.view duration:3.0
options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {
}];
}
我在这里使用3秒钟来说明问题。在第二个视图中,我有一个方法来更新GUI,从视图控制器添加另一个视图:
-(void)updateGUI
{
sample=[[ViewControllerSample alloc]initWithNibName:@"ViewControllerSample" bundle:nil];
sample.view.frame=CGRectOffset(sample.view.frame, 0, 150);
[self.view addSubview:sample.view];
}
现在,问题是:当我从viewDidLoad函数调用它时 - 它工作得很好。 但是,如果从viewWillAppear函数调用,则视图将出现在屏幕顶部,并且只有在动画结束后才会跳转到它的位置。 如何解决?
答案 0 :(得分:0)
把它放在viewDidLoad中是错误的吗?
从它的外观来看,订单正在加载,动画然后出现的委托方法。另外把你的sample = [[ViewControllerSample alloc] initWithNibName:@“ViewControllerSample”bundle:nil];在第二个视图控制器的init部分。
或者,您可以在动画之前调用updateGUI。所以在[UIView过渡......
之前[sc updateGUI];
答案 1 :(得分:0)
只需拨打updateGUI
中的viewDidLoad
即可。在viewWillAppear
中做不了多少工作。 viewWillAppear
如果你做了太多工作,就会阻止你的观看。
答案 2 :(得分:0)
答案分为两部分: