0

我想让用户使用手势识别器上下滑动来控制 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

4

2 回答 2

5

增加和减少屏幕的亮度

对于斯威夫特

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")
        }
    }
}
于 2014-09-25T13:08:39.090 回答
1

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

于 2013-01-19T01:22:14.963 回答