更改dismissViewControllerAnimated的动画

3
我有一个方法。
- (void) swipeRight
{
[self dismissViewControllerAnimated:YES completion:nil];
}

我正在使用这个方法来在用户向右滑动时关闭视图控制器。但我不太喜欢苹果提供的视图控制器关闭动画(页面向下移动),我想改成苹果提供的其他动画,同时仍然使用dismissViewControllerAnimated 方法。


请查看https://dev59.com/kmox5IYBdhLWcg3wzXel。 - Gismay
该答案仅适用于iOS6及以下版本。 - MendyK
2个回答

3

针对@Tomaž Stoiljkovič(以及任何对Swift 4感兴趣的人)

    let transition = CATransition()
    transition.duration = 0.3
    transition.type = kCATransitionFade
    transition.subtype = kCATransitionFromTop

    navigationController?.view.layer.add(transition, forKey: kCATransition)
    self.dismissViewControllerAnimated(false, completion: nil)

1
尝试在您的关闭之前放置以下内容:

CATransition* transition = [CATransition animation];
        transition.duration = 0.3;
        transition.type = kCATransitionFade;
        transition.subtype = kCATransitionFromTop;

然后将animated设置为NO。
[self.navigationController.view.layer addAnimation:transition forKey:kCATransition];
[self dismissViewControllerAnimated:NO completion:nil];

-- 你可以尝试更多的过渡类型:

kCATransitionFade;
kCATransitionMoveIn;
kCATransitionPush;
kCATransitionReveal;

我在这种情况下没有使用导航控制器,而是手动完成所有操作,所以那对我没用。你能更新一下吗?谢谢 =) - MendyK
不确定的话,你可以尝试使用self.view.layer...而不是self.navigationController.view.layer。 - Adama
这个有 Swift 版本吗? - TomazStoiljkovic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接