0

我想在视图控制器之间进行自定义转换,从左到右滑动,就像 AppLaucher 中的页面之间的 iOS 基本转换效果一样,但会变暗。

我在 viewControllers 之间有一个自定义 segue(我们称它们为 FirstVC 和 SecondVC)。对于变暗,我有一个在动画过程中淡入的黑色视图(SecondVC 比 FirstVC 暗)。我有一个类 - UIStoryboardSegue 的子类 - 用于我的自定义 segue,并-(void)perform实现了该方法。在这种方法中,我已经实现了(更多细节):

//...Initials frames

UIView *blackView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 568)];
blackView.backgroundColor = [UIColor blackColor];
blackView.alpha = 0;
[UIView animateWithDuration:0.3 animations:^{
blackView.alpha = 0.5;
//...Animations
}
completion:^(BOOL finished){

}];

我确切地说这两个视图控制器位于两个不同的导航视图控制器中。

对于变暗,我想在转换完成时修改SecondVC类中声明的“darkView”属性,以存储转换后的变暗。

为此,我想做以下选项之一(如果其中一个工作我不需要其他选项):

  1. 在完成块中直接访问SecondVC的darkView属性并修改

  2. 检测动画何时完成并在该点修改属性,在 SecondVC 类中实现的方法中

  3. 写入[dest.view addSubview:whiteView];完成块(“dest”是目标视图控制器),并在 SecondVC 的另一种方法中访问这个子视图

我已经为这三种解决方案尝试了很多东西,但我非常感谢你的帮助。谢谢

4

1 回答 1

0

好吧,如果您实现了自定义 segue 类,那么获取即将被推送到导航堆栈上的 secondViewController 的实例应该很简单。

在你的 perform 方法中试试这个

FirstViewController *firstVC = self.sourceViewController;
SecondViewController *secondVC = self.destinationViewController;

可能您可以在您的 secondVC 上声明一个公共 UIView 属性并访问它,并且还可能公开一个方法并在动画完成后调用它。

于 2014-08-21T18:53:46.990 回答