2013-04-16 86 views
0

我期待創造其連接到我UIView一個UISwipeGestureRecognizer。我想要實現的功能允許用戶在屏幕上滑動手指並設置屏幕的亮度。UISwipeGestureRecognizer控制亮度

以下是我已經嘗試:

- (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將右邊的值。

有什麼建議嗎?

回答

1

除非您有總數,否則無法正常化。在這種情況下,這將通過你的屏幕寬度。如果您在右側開始更多,屏幕會變得更快,這是違反直覺的。這將是更好地確定任何點相當於光亮度標尺:

CGFloat width = self.view.bounds.size.width; 
brightVal = position.x/width; 

現在,如果startVal比亮度亮度應跳到點上規模的移動啓動後大。這幾乎是UISlider的工作原理。你甚至不需要計算到起點的增量。

可以使用這個被觸發後,才deltaXX超過一定的閾值。

+0

啊當然,我使用當前的亮度作爲總量,這顯然不會工作,因爲它不是相對於屏幕。今天早上7點腦放屁。乾杯! – James