如何调暗背景视图

时间:2014-05-27 10:57:04

标签: ios7 modalviewcontroller

在使用自定义模态视图控制器时尝试调暗背景视图我将背景颜色设置为灰色,颜色为0.5不透明度:

- (void)rulesTapped:(id)sender
{
    RulesVC *rulesVC = [[RulesVC alloc] init];

    self.view.backgroundColor = [UIColor colorWithRed:0.3 green:0.3 blue:0.3 alpha:0.5];
    rulesVC.modalPresentationStyle = UIModalPresentationCustom;
    rulesVC.transitioningDelegate = self;
    [self presentViewController:rulesVC animated:YES completion:nil];
}

但当我在解除模态VC的同时尝试将其设置回whiteColor(或黄色)时,此调光保持不变:

- (void) gotItTapped:(id)sender
{

    [self.presentingViewController.view setBackgroundColor:[UIColor yellowColor]];

    [self dismissViewControllerAnimated:YES completion:nil];

}

为什么呢?有没有办法暗淡背景(然后删除调光)视图而不添加另一个覆盖视图,但只是在现有视图下操作?

2 个答案:

答案 0 :(得分:0)

我认为如果不向UIViewController添加其他元素,就无法实现。我通常会将UIView setHidden:YES和alpha 0.0f以及blackColor插入backgroundColor。在展示某些内容时,我始终将其设置为Hidden:NO并将其设置为不透明度为0.6f。

[UIView animateWithDuration:0.5f animations:^{
    [self.view setAlpha:0.6];
}];

这种方式不会立即出现,看起来更顺畅。

答案 1 :(得分:0)

我实际上需要这个能够在昏暗的视图中放置一些其他的UIView,并且在这个dimview之外的每次点击都会解雇内置的UIView和dimView。我发现的是,对于这个,最好是模仿一个按钮,点击后从superview中删除:

self.dimView = [UIButton buttonWithType:UIButtonTypeCustom];
self.dimView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.2f];
self.dimView.frame = CGRectMake(0,
                                0,
                                self.view.frame.size.width,
                                self.view.frame.size.height);
[self.dimView addTarget:self
                 action:@selector(removeDimView)
       forControlEvents:UIControlEventTouchUpInside];