手势识别器可以控制iOS显示亮度吗?

时间:2013-01-18 23:47:40

标签: iphone objective-c uigesturerecognizer brightness uiscreen

我想让用户使用手势识别器在iOS应用中控制亮度,以便向上和向下滑动。手势甚至可以控制亮度吗?我在使用滑块和UIScreen的亮度属性之前完成了它...

[UIScreen mainScreen].brightness = 0.5;

我希望能够像使用滑块(如iBooks应用程序)一样控制亮度,而不是滑块使用手势识别器。该想法是,只要识别出触摸并且手指向上或向下移动,手势就连续地改变亮度值。我不确定是否应该使用平移手势并以某种方式限制方向向上或向下,或使用轻扫手势(但显然检测到一次滑动并且不会持续更新值)。

也许在屏幕上按指定的数量移动手指会增加亮度值的0.0 - 1.0范围。我不知道怎么接近它所以我只是在大声思考。

有什么想法吗?非常感谢。

编辑:好的,所以我在另一个类似的问题上找到了这段代码

- (void)pan:(UIPanGestureRecognizer *)recognizer
{
    if ((recognizer.state == UIGestureRecognizerStateChanged) ||
        (recognizer.state == UIGestureRecognizerStateEnded))
    {
        CGPoint velocity = [recognizer velocityInView:self.view];

        if (velocity.y >0)   // panning down
        {
            self.brightness = self.brightness -.02;
                 NSLog (@"Decreasing brigntness in pan");
        }
        else                // panning up
        {
            self.brightness = self.brightness +.02;
              NSLog (@"Increasing brigntness in pan");
        }
    }
}

每次你向上或向下手势时,似乎至少打印一个NSLog,我想我现在只想知道是否有办法使用 NSLog来找出当前的亮度值而不是它只是告诉你它是否检测到一个手势(除非我是愚蠢的,而我正在使用的NSLog已告诉我了吗?)。谢谢,这将非常有用,因为我无法在设备上运行。 :-D

2 个答案:

答案 0 :(得分:5)

增加和减少屏幕亮度

对于Swift

1)如何在视图中添加PanGesture

let panGesture = UIPanGestureRecognizer.init(target: self, action: #selector(pan(recognizer:)))
panGesture.delegate = self
panGesture.minimumNumberOfTouches = 1
mp.view.addGestureRecognizer(panGesture)

2)使用PanGesture增加和降低屏幕亮度的代码

func pan(recognizer:UIPanGestureRecognizer){
    if recognizer.state == UIGestureRecognizerState.changed || recognizer.state == UIGestureRecognizerState.ended {
        let velocity:CGPoint = recognizer.velocity(in: self.view)

        if velocity.y > 0{
            var brightness: Float = Float(UIScreen.main.brightness)
            brightness = brightness - 0.03
            UIScreen.main.brightness = CGFloat(brightness)
            print("Decrease brigntness in pan")
        }
        else {
            var brightness: Float = Float(UIScreen.main.brightness)
            brightness = brightness + 0.03
            UIScreen.main.brightness = CGFloat(brightness)
            print("Increase brigntness in pan")
        }
    }
}

答案 1 :(得分:1)

是的!只需使用UIPanGestureRecognizer并在调用平移手势时相应地调整brightness值。 查看Apple文档。