通过滑动改变UIView的不透明度

时间:2010-11-29 10:23:59

标签: iphone objective-c uiview

我见过其他一些可以改变iPhone屏幕亮度的应用程序。我认为他们只是放置一个UIView并将其backgroundColor设置为黑色,然后每当用户在屏幕上滑动时,不透明度会根据手指的滑动而改变。

任何人都可以帮助我,我怎么能模仿这个功能。

1 个答案:

答案 0 :(得分:2)

您可以在顶部添加UIView(黑色)的叠加层。

(如果您的视图中没有依赖于用户的控件(例如按钮,步进器等),那么这没关系。例如,您只需在UIView上有一个UITextView,那么您可以在上面添加黑色UIView的UITextView)

(在顶部)黑色UIView - > UITextView - >的UIView

然后,您可以使用

控制黑色UIView的alpha分量
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    NSArray *touchesArray = [touches allObjects];

    for(int i=0; i<[touchesArray count]; i++) {
        UITouch *touch = (UITouch *)[touchesArray objectAtIndex:i];
        CGPoint point = [touch locationInView:nil];

        //set the relationship between point and alpha. Maybe when x increases then alpha increases. You do the math.
    }
}

顺便说一下,将黑色UIView的alpha设置为0.0到0.7(请记住,将其设置为完全1.0会将屏幕设置为全黑。)

设置alpha:

[UIView beginAnimations:nil context:NULL]; {
    [UIView setAnimationDuration:duration];
    [blackView setAlpha:alphaCounter];
} [UIView commitAnimations];