我需要在屏幕上设置从A到B的视图转换动画。 但是,我希望当用户在屏幕上滑动拇指时进行翻译。
我还希望翻译依赖于拇指滑动,使它们彼此跟随。
我假设我需要某种听众,它会跟随我在屏幕上的拇指动作,我会以某种方式告诉我的视图在屏幕上向左或向右移动,具体取决于滑动的方向。
我怎样才能做到这一点?
答案 0 :(得分:1)
我希望它可以帮助你...
UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(tappedRightButton:)];
[swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
[self.view addGestureRecognizer:swipeLeft];
UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(tappedLeftButton:)];
[swipeRight setDirection:UISwipeGestureRecognizerDirectionRight];
[self.view addGestureRecognizer:swipeRight];
答案 1 :(得分:1)
我会使用UIPanGestureRecognizer,因为它有更多的控制,例如,如果你移动缓慢,它仍然可以拾取你的移动,那么也许你可以相应地定位你的翻译。
您可以执行以下操作:
var panRecongniser = UIPanGestureRecognizer(target: self, action: Selector("didPanRecongnised:"))
在viewDidLoad中,然后:
func didPanRecongnised(recongniser: UIPanGestureRecognizer){
if(recongniser.state == UIGestureRecognizerState.Changed || recongniser.state == UIGestureRecognizerState.Began){
self.didPanMove(recongniser)
}else if(recongniser.state == UIGestureRecognizerState.Ended || recongniser.state == UIGestureRecognizerState.Cancelled){
self.didPanEnd(recongniser)
}
}
并在你的didPanMove中:
func didPanMove(recongniser: UIPanGestureRecognizer){
if((self.view.superview) != nil){
if(recongniser.state == UIGestureRecognizerState.Began){
// save the original position
self._origPoint = self.view.frame.origin
}
// this is the translation of the last segment of the "move"
let trans = recongniser.translationInView(self.view.superview!)
// this is the velocity of the last segment of the "move"
let velocity = recongniser.velocityInView(self.view.superview!)
}
}
使用翻译值来锻炼用户滑动的方向。不要忘记添加" trans"价值作为每次积累的翻译" didPanMove"叫做。
您现在可以使用这些值来执行许多操作。就像有一个出现的视图来跟随你的手指的进展。或者当速度达到一定的速度时,看到" snap"滑动到所需的位置。也许如果用户不能足够快地滑动或足够远,让视图跟随手指,那么" snap"当手势结束时回到隐藏位置。
要制作动画,如果您正在执行自定义滑动视图,则可以使用UIView.animateWithDuration为视图滑动设置动画。