如何显示来自 IOS 应用程序控制器的半透明视图
How to show a view with semi transparency from IOS application controller
假设我的 IOS 应用程序中有十个视图控制器。假设特定事件(例如:BLE 连接 success/failure)将在应用程序控制器中得到通知。
我想阻止当前的视图控制器(无论它是哪个视图控制器)并根据来自应用程序控制器的事件显示一个半透明的视图 2 秒。
我怎样才能在 IOS 中实现这一点。非常感谢任何帮助。
只需设置您的视图 Alpha 属性 喜欢
viewController.view.alpha = 0.5;
设置视图的 alpha 级别将使所有子视图也透明。如果你只是想让你的背景是半透明的,请执行以下操作。
myView.backgroundColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 0.5)
(Swift 语法)
我对上述问题的解决方案是这样的:
创建覆盖任何视图、导航栏和标签栏的自定义透明叠加 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.
假设我的 IOS 应用程序中有十个视图控制器。假设特定事件(例如:BLE 连接 success/failure)将在应用程序控制器中得到通知。
我想阻止当前的视图控制器(无论它是哪个视图控制器)并根据来自应用程序控制器的事件显示一个半透明的视图 2 秒。
我怎样才能在 IOS 中实现这一点。非常感谢任何帮助。
只需设置您的视图 Alpha 属性 喜欢
viewController.view.alpha = 0.5;
设置视图的 alpha 级别将使所有子视图也透明。如果你只是想让你的背景是半透明的,请执行以下操作。
myView.backgroundColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 0.5)
(Swift 语法)
我对上述问题的解决方案是这样的:
创建覆盖任何视图、导航栏和标签栏的自定义透明叠加 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.