如何从IOS应用程序控制器显示半透明视图





假设我的IOS应用程序中有十个视图控制器。假设特定事件(例如:BLE连接成功/失败)将在应用程序控制器中得到提示
我想阻止当前视图控制器(无论是哪个视图控制器),并根据应用程序控制器的事件显示半透明视图2秒

如何在IOS中实现这一点。如有任何帮助,我们将不胜感激。

我对上述问题的解决方案是:

创建一个自定义透明覆盖UIView,覆盖任何视图、导航栏和选项卡栏。

-在视图控制器嵌入的导航控制器(或选项卡控制器)中,我创建了一个自定义视图,其框架等于导航控制器视图的框架。

-然后我把它的原点.y设置为navigationController.view.height ,把它设置在屏幕外

-然后,我创建了两个函数-(void)showOverlay-(void)hideOverlay,它们在屏幕内外为叠加视图设置动画:

- (void)hideOverlay{
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.3];
    CGRect frm = self.helpView.frame;//helpView is my overlay
    frm.origin.y = self.offscreenOffset; //this is an Y offscreen usually self.view.height
    self.helpView.frame = frm;
    [UIView commitAnimations];
}
- (void)showOverlay{
    [self.view bringSubviewToFront:self.helpView];
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.3];
    CGRect frm = self.helpView.frame;
    frm.origin.y = self.onscreenOffset;
    self.helpView.frame = frm;
    [UIView commitAnimations];
}

-在我的视图控制器中,我可以直接调用

[(MyCustomNavCtrl *)self.navigationController showOverlay];
[(MyCustomNavCtrl *)self.navigationController hideOverlay];
And that's about it.

只需像一样设置视图alpha属性

viewController.view.alpha = 0.5;

设置视图的alpha级别也会使所有子视图透明。如果你只是想让你的背景是半透明的,请执行以下操作。

myView.backgroundColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 0.5)

(Swift语法)

相关内容

  • 没有找到相关文章

最新更新