Uiview UISweepGestureRecognitor控制亮度

Uiview UISweepGestureRecognitor控制亮度,uiview,uiswipegesturerecognizer,Uiview,Uiswipegesturerecognizer,我希望创建一个附加到我的UIView的UIWipegestureRecognitor。我想要实现的是,用户可以用手指在屏幕上滑动,并设置屏幕的亮度 以下是我的尝试: - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint currentPosition = [touch locationInView:self.v

我希望创建一个附加到我的UIView的
UIWipegestureRecognitor
。我想要实现的是,用户可以用手指在屏幕上滑动,并设置屏幕的亮度

以下是我的尝试:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint currentPosition = [touch locationInView:self.view];

    CGFloat deltaXX = (startPoint.x - currentPosition.x);

    float brightVal;

    if (deltaXX > 0) {
        brightVal = [[UIScreen mainScreen] brightness] / ((startPoint.x / deltaXX) * 1.0);
    } else {
        brightVal = [[UIScreen mainScreen] brightness] - ((startPoint.x / deltaXX) * 1.0);
    }

    NSLog(@"%f", brightVal);
    [[UIScreen mainScreen] setBrightness:brightVal];
}
然而,这似乎不能正常工作。在屏幕的右侧边缘,用户可以快速调整其亮度

我想问题是我无法解决如何规范化值,其中
1.0
将是左侧,
0.0
将是右侧


有什么建议吗?

除非您有总数,否则无法正常化。在这种情况下,这将取决于您的屏幕宽度。如果从右边开始,屏幕会变得更亮,这是违反直觉的。最好确定亮度刻度的任何点的等效值:

CGFloat width = self.view.bounds.size.width;
brightVal = position.x / width; 
现在,如果
startVal
大于亮度,则在移动开始后,亮度应跳至刻度上的点。这就是
UISlider
的工作原理。您甚至不需要计算到起点的增量


只有在deltaXX超过某个阈值后才能触发此操作。

当然,我使用的是当前亮度作为总亮度,这显然不起作用,因为它与屏幕无关。今天早上7点大脑放屁。干杯