Ios PanGesture和一些基础数学

Ios PanGesture和一些基础数学,ios,objective-c,uipangesturerecognizer,Ios,Objective C,Uipangesturerecognizer,我想根据用户“平移”屏幕的位置计算0-100之间的百分比。如果它在最底部,0%。如果是最高的,100%。我需要一个不透明滑动功能这个。用户可以通过滑动更改屏幕的不透明度,最底部的将屏幕设置为不可见,而最顶部的将屏幕设置为最亮,100% - (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer{ CGPoint translation = [recognizer translationInView:self.view];

我想根据用户“平移”屏幕的位置计算0-100之间的百分比。如果它在最底部,0%。如果是最高的,100%。我需要一个不透明滑动功能这个。用户可以通过滑动更改屏幕的不透明度,最底部的将屏幕设置为不可见,而最顶部的将屏幕设置为最亮,100%

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

我很确定我正在考虑将
translation.x
转换为percetange,但这很混乱。

假设您的视图覆盖了整个屏幕,我相信您要查找的百分比是

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

locationInView
为您提供视图坐标系中的一个点,该点由其
边界定义,左上角为(0,0)。您希望顶部为100%,因此从1中减去以将其翻转(否则您将在底部得到100%)

提供自触摸开始位置以来的累积移动。听起来你想要的是相对于视图边界的触摸位置,因此你应该使用它。此值.y除以view.bounds.size.height将给出屏幕下方的相对距离,顶部为0,底部为1,

用于垂直使用
y
,而不是
x
。不确定这是否正确,我在屏幕顶部和底部都得到了1.0的值。在每种情况下,
translation.y
的值是多少?
self.view.bounds.size.height的值是多少?我还注意到我在代码中使用了“y”,因为你提到了“底部”和“顶部”。如果您实际上是在左右平移(因此代码中引用了“x”),那么您应该使用
translation.x/self.view.bounds.size.width
。屏幕中部:translation:-100.666656---屏幕底部:translation:-2.333344---屏幕顶部:translation:2.333344。。我希望中间是。5(或50%)顶部是100%或(1),底部是0%或(0)对不起。。。我只是想知道我错过了什么
TranslationView
提供从开始平移的相对距离。无论从何处开始,都被称为(0,0),并且之后的所有
translationView
点都相对于该位置。我相信您需要的是
locationInView
,它为您提供视图坐标系中点的坐标,而不管您从何处开始。假设
self.view
中的视图覆盖了整个屏幕,我的原始代码就可以工作了。我要去编辑我的答案。