我正在尝试将视图滑动到屏幕上,并在用户点击取消按钮时将其滑出屏幕。滑动到屏幕上工作得很好,使用以下代码。
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(或其他方式)让它通过屏幕动画的最佳方式。这是如何完成的?
我确定它的东西很小,但我看到的其他问题似乎并没有削减它。在此先感谢您的任何帮助。
答案 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")
}