我想让用户使用手势识别器在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
答案 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文档。