我想在视图控制器之间进行自定义转换,从左到右滑动,就像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”属性,以便在转换后存储变暗。
为此,我想做以下其中一个选项(如果其中一个工作我不需要其他选项):
直接在完成块中访问SecondVC的darkView属性并进行修改
检测动画何时完成并在此时修改属性,在SecondVC类中实现的方法
在完成块中写入[dest.view addSubview:whiteView];
(“dest”是目标视图控制器),并在SecondVC的其他方法中访问THIS子视图
我已经为这三种解决方案尝试了很多东西,但我真的很感谢你的帮助。感谢
答案 0 :(得分:0)
那么如果您实现了自定义segue类,那么获取即将推送到导航堆栈的secondViewController的实例应该很简单。
在执行方法中尝试此操作
FirstViewController *firstVC = self.sourceViewController;
SecondViewController *secondVC = self.destinationViewController;
可能你可以在你的secondVC上声明一个公共UIView属性并访问它,也可能暴露一个方法并在动画完成后调用它。