Uiview UISweepGestureRecognitor控制亮度
我希望创建一个附加到我的UIView的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
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点大脑放屁。干杯