PanGesture和一些基本的数学

时间:2017-12-07 17:47:37

标签: ios objective-c uipangesturerecognizer

我想根据用户的位置计算0-100的百分比" pans"屏幕。如果它位于最底部,则为0%。如果它位于最顶端,100%。我需要这个用于不透明度滑动功能。用户可以通过滑动来改变屏幕的不透明度,其中最底部将屏幕设置为不可见,而最顶部将屏幕设置为最亮,100%。

- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer{
    CGPoint translation = [recognizer translationInView:self.view];
    NSLog(@"Translation: %f", translation.x);
}

我非常确定我正在考虑将translation.x转换为感知,但却令人困惑。

2 个答案:

答案 0 :(得分:1)

假设您的视图涵盖了整个屏幕,我相信您正在寻找的百分比是

CGPoint location = [recognizer locationInView:self.view];
CGFloat percentage = 1.0 - (location.y / self.view.bounds.size.height);

locationInView为您提供视图坐标系中的一个点,该点由其bounds定义,左上角为(0,0)。你希望顶部是100%,因此减去1来翻转它(否则你会在底部获得100%)。

答案 1 :(得分:0)

translation:in:为您提供自触摸开始位置以来的累积移动。听起来你所追求的是相对于视图边界的触摸位置,因此你应该使用location:in:代替。这个值.y除以view.bounds.size.height将给你屏幕下方的相对距离,顶部为0,底部为1,