当viewcontroller被解除时改变UIViews的位置

时间:2012-08-30 12:56:14

标签: ios uiview uiviewcontroller

我有一个ViewController,它提供了另一个视图控制器。当第二个被解雇时,我在第一个控制器中有一个布尔值isFromSecondView,设置为true。所以当我的第一个ViewController再次可见时,会调用viewWillAppear,我可以从那里移动控制器内的一些视图。此方法工作正常,viewWillAppear方法可以决定它是否来自第二个视图控制器。但我无法移动控制器内部的视图,即使它被调用。这个方法是我应该这样做的方式,还是有另一种方法可以在第二个控制器被解除时移动视图?

编辑,添加了视图移动方法:

- (void)moveViews
{
    NSLog(@"moving view");
    [UIView animateWithDuration:0.5
                     animations:^{
                         self.view.center = CGPointMake(160, 250);
                         //self.tableView.center = CGPointMake(160, -100);
                         self.addView.center = CGPointMake(160, 240);
                     }
                     completion:^(BOOL finished){}];
}

2 个答案:

答案 0 :(得分:0)

dismissViewControllerAnimated有一个可以使用的完成处理程序。一旦控制器完成解除,这将执行您的动画代码。当然,你需要对另一个控制器执行的处理程序进行更改,如果你使用它的话。

[self dismissViewControllerAnimated:YES completion:^{
    NSLog(@"moving view");
    [UIView animateWithDuration:0.5
                     animations:^{
                         self.view.center = CGPointMake(160, 250);
                         //self.tableView.center = CGPointMake(160, -100);
                         self.addView.center = CGPointMake(160, 240);
                     }
                     completion:^(BOOL finished){}];
}

答案 1 :(得分:0)

您可以使用viewWillLayoutSubviews(在控制器中)在需要时布局视图。

示例:

- (void)viewWillLayoutSubviews
{
  [super viewWillLayoutSubviews];
  // self.oneView.center = ...
  // self.anotherView.center = ...
}