说我在IOS应用程序中有十个视图控制器。假设特定事件(例如:BLE连接成功/失败)将在应用程序控制器中得到暗示。
我想阻止当前视图控制器(无论哪个视图控制器),并根据应用程序控制器的事件显示半透明视图2秒。
如何在IOS中实现这一目标。任何帮助都可能受到高度赞赏。
答案 0 :(得分:1)
只需设置您的视图alpha属性,如
viewController.view.alpha = 0.5;
答案 1 :(得分:1)
我对上述问题的解决方案是:
创建一个来自任意视图,导航栏和tabbbar的自定义透明叠加层UIView。
- 在您的视图控制器嵌入的导航控制器(或标签栏控制器)中,我创建了一个自定义视图,其框架等于导航控制器视图的框架。
- 然后我通过将它的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.
答案 2 :(得分:0)
设置视图的Alpha级别也会使所有子视图都透明。如果您只是希望您的背景是半透明的,请执行以下操作。
myView.backgroundColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 0.5)
(Swift语法)