0



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

我怎样才能在IOS中实现这一点。任何帮助都可能受到高度赞赏。

4

3 回答 3

1

只需将您的视图 alpha 属性设置为

viewController.view.alpha = 0.5;
于 2015-03-31T12:30:06.940 回答
1

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

创建一个自定义的透明覆盖 UIView,它可以覆盖任何视图、导航栏和 tabbbar。

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

- 然后我通过将它的 origin.y 设置为 navigationController.view.height 将其设置为屏幕外

- 然后我创建了 2 个函数-(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.
于 2015-03-31T12:38:14.513 回答
0

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

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

(快速语法)

于 2015-03-31T12:33:59.007 回答