如何在PageViewController页面滑动时触发动画

时间:2015-02-20 13:05:28

标签: ios swipe uipageviewcontroller

我需要在屏幕上设置从A到B的视图转换动画。 但是,我希望当用户在屏幕上滑动拇指时进行翻译。

我还希望翻译依赖于拇指滑动,使它们彼此跟随。

我假设我需要某种听众,它会跟随我在屏幕上的拇指动作,我会以某种方式告诉我的视图在屏幕上向左或向右移动,具体取决于滑动的方向。

我怎样才能做到这一点?

2 个答案:

答案 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为视图滑动设置动画。