- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个导航 ViewController,当用户关闭互联网时,我想在所有 ViewController 上添加一个名为 TestView
的自定义 View 。当互联网连接状态发生变化时,我将自定义 View 添加到 keyWindow 中。当我插入 ViewController 时, View 会显示并保持在那里,但是当我以模态方式呈现 ViewController 时,模态 ViewController 会覆盖 View 。
即使 VC 以模态方式呈现,我也希望 View 保留在前面,并且我希望能够在我的 AppDelegate 文件中为所有模态 ViewController 或类似的东西添加一些代码。我怎样才能在 swift 5 中做到这一点?我在想,如果有一个函数每次出现模态 VC 时都会触发,我可以在那里添加我的代码。这是我的 AppDelegate 目前的样子:
class AppDelegate: UIResponder, UIApplicationDelegate, ReachabilityObserverDelegate {
var reachability: Reachability?
var window: UIWindow?
var internetView: TestView?
//This is called when the internet connects or disconnects
func reachabilityChanged(_ isReachable: Bool) {
window = getKEYWindow()
if !isReachable {
window?.addSubview(internetView!)
}
else {
internetView?.removeFromSuperview()
}
}
func getKEYWindow() -> UIWindow? {
return UIApplication.shared.connectedScenes.filter({$0.activationState == .foregroundActive}).map({$0 as? UIWindowScene}).compactMap({$0}).first?.windows.filter({$0.isKeyWindow}).first
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
try? addReachabilityObserver()
internetView = TestView(frame: CGRect(x:0, y: 50, width: UIScreen.main.bounds.size.width, height: 14))
return true
}
}
Present ViewController Modally:
更新:我找到了另一种方法来保持我的视野在前面。我在 didFinishLaunchingWithOptions
中添加了以下行 internetView.layer.zPosition = .greatestFiniteMagnitude
,它的效果非常好。谢谢大家的帮助。
最佳答案
我可以建议一种方法:
打开一个更高级别的新 UIWindow 并将其绘制在整个应用程序之上。
我不知道这是否是最好的方法,但是我只是在一个空应用程序上使用以下代码进行了测试 - 它似乎有效 - 甚至可以是透明的。
_myWindow = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
[_myWindow makeKeyAndVisible];
UIViewController* dummyVC = [[UIViewController alloc] init];
dummyVC.view = [[UIView alloc]initWithFrame:_myWindow.bounds];
[dummyVC.view setOpaque:NO];
[dummyVC.view setAlpha:0.1f];
[_myWindow setRootViewController:dummyVC];
_myWindow.windowLevel = UIWindowLevelAlert + 1;
[_myWindow.rootViewController.view.layer setBackgroundColor:[UIColor greenColor].CGColor];
关于iOS - 当 View Controller 以模态方式呈现时,如何将 View 保持在前面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59451980/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!