iOS 8 CATransition - 屏幕外滑动视图

时间:2015-02-05 04:59:33

标签: ios xcode animation catransition

我正在尝试将视图滑动到屏幕上,并在用户点击取消按钮时将其滑出屏幕。滑动到屏幕上工作得很好,使用以下代码。

CATransition *trans = [CATransition animation];
trans.duration = 0.2;
trans.type = kCATransitionMoveIn;
trans.subtype = kCATransitionFromLeft;

[viewToAnimate.layer addAnimation:trans forKey:nil];

[self.view addSubView:viewToAnimate];

但是,我无法找到通过CATransition(或其他方式)让它通过屏幕动画的最佳方式。这是如何完成的?

我确定它的东西很小,但我看到的其他问题似乎并没有削减它。在此先感谢您的任何帮助。

2 个答案:

答案 0 :(得分:2)

试试这个,它实际上会将屏幕的y位置更改为屏幕的末尾,并创建与您尝试过的动画相同的动画。

CGRect temp = self.view.frame;
temp.origin.x = [[UIScreen mainScreen] bounds].size.width ;
[UIView animateWithDuration:0.5
                      delay:0.0
                    options: UIViewAnimationCurveEaseOut
                 animations:^{
                     self.view.frame = temp;
                 }completion:^(BOOL finished){
                     [self.view removeFromSuperview];
                 }];

答案 1 :(得分:0)

有关Swift,请参见Slide in Animation in Swift教程。示例是从左侧滑入,但是只需更改一行以使其从右侧滑入即可。

func slideInFromLeft(duration: TimeInterval = 0.7, completionDelegate: CAAnimationDelegate? = nil) {
    let slideInFromLeftTransition = CATransition()

    if let delegate: CAAnimationDelegate = completionDelegate {
        slideInFromLeftTransition.delegate = delegate
    }

    // Customize the animation's properties
    slideInFromLeftTransition.type = kCATransitionPush
    slideInFromLeftTransition.subtype = kCATransitionFromLeft //or kCATransitionFromRight
    slideInFromLeftTransition.duration = duration
    slideInFromLeftTransition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
    slideInFromLeftTransition.fillMode = kCAFillModeRemoved

    // Add the animation to the View's layer
    self.layer.add(slideInFromLeftTransition, forKey: "slideInFromLeftTransition")
}