代码之家  ›  专栏  ›  技术社区  ›  user1272965

iOS>8的Tabbarvc上的透明vc

  •  1
  • user1272965  · 技术社区  · 8 年前

    关于这个主题有很多问答,其中许多是指旧版本的iOS。在这个问题上我能找到最好的答案 was this one .

    它几乎对我有效,但是当通过UItabarViewController子类呈现它时,它只部分有效:在呈现动画期间,我得到了一个很好的、半透明的视图,但是一旦呈现动画完成,呈现的VC又变得不透明。

    用目标C编码,但我很高兴看到快速的答案…

    - (void)showBusyWithCompletion:(void (^)(BOOL))completion {
        UIViewController *vc = [[UIViewController alloc] init];
    
        vc.view.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.5];
        vc.view.opaque = NO;
    
        vc.modalPresentationStyle = UIModalPresentationCurrentContext;
        [self presentViewController:vc animated:YES completion:^{
            [self performSelector:@selector(hideBusy:) withObject:vc afterDelay:4];
        }];
    }
    
    - (void)hideBusy:(UIViewController *)vc {
        [self dismissViewControllerAnimated:vc completion:nil];
    }
    

    同样,呈现的vc是一个uitabarvc子类,除了一些记录访问了哪些选项卡的代码外,没有对它做任何操作。所提出的VC是一个普通的视图控制器。它的视图在滑动时显示为透明的红色,然后变成不透明的红色。( 更黑的,像是混合了黑色 )一旦过渡完成。

    背景出现后如何保持透明?

    1 回复  |  直到 8 年前
        1
  •  1
  •   user1272965    8 年前

    结果我上面提到的答案是正确的,我不正确地转录了设置。概括地说:这不起作用(另一个答案没有宣称它起作用):

    vc.modalPresentationStyle = UIModalPresentationCurrentContext;
    

    …但这两种情况都有:

    vc.modalPresentationStyle = UIModalPresentationOverFullScreen;
    

    或者正如@tylerthecompiler指出的那样:

    vc.modalPresentationStyle = UIModalPresentationOverCurrentContext;