- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为覆盖行为创建自定义 UIWindow,并且我到处都看到“UIWindow 不是基于方向的”;女巫正是我想要的,因为我想匹配物理设备的边框。
在 iPhone 上,一切都附加得很好,UIWindow 保持一致,而且我有一个很好且静止的行为;当我旋转设备时,边框不会移动:
在 iPad 上,使用完全相同的代码,我在 UIWindow 层上获得了旋转动画(我用它来绘制边框),这使得这种奇怪的布局发生:
我不使用轮换通知;因为我不想回应轮换。我使用 UIScreen nativeBounds“非定向感知”边界来确保我没有对方向敏感的东西。这种跨设备的不同行为让我感到不舒服。
有人已经遇到过这种奇怪的行为吗?你对此有何回应?有没有好的做法或解决方法?
该项目的完整代码(包括示例应用程序)位于此处: https://github.com/Dean151/RecordingOverlay
overlay和UIWindow子类的具体代码在这里: https://github.com/Dean151/RecordingOverlay/blob/master/Sources/RecordingOverlay/RecordingOverlay.swift
最佳答案
事实证明,如果满足某些条件,窗口就会自动旋转。当满足所有这些参数时,我必须覆盖旋转。
如果所有这些都成立,UIWindow 将自动旋转:
您可以使用一个小片段来检测:
@available(iOS 9.0, *)
var willAutorotate: Bool {
guard UIDevice.current.userInterfaceIdiom == .pad else {
return false
}
let window = UIApplication.shared.delegate?.window ?? nil
guard UIApplication.shared.supportedInterfaceOrientations(for: window) == .all else {
return false
}
let info = Bundle.main.infoDictionary ?? [:]
guard info["UIRequiresFullScreen"] as? Bool != true else {
return false
}
guard info["UILaunchStoryboardName"] != nil else {
return false
}
return true
}
现在我知道它何时会自动旋转,我可以更改框架和变换以“取消”旋转。
关于ios - iPhone 和 iPad 设备之间的 UIWindow 方向不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56609275/
我有 2 UIWindows , 当我同时显示 UIWindows最新显示UIWindow总是在显示的第一个之上 UIWindow .每个UIWindow是自己的UIWindow , 所以没有 Sub
我知道这看起来是个大问题,但事实并非如此,所以请不要害怕阅读它。主要是我在解释这些东西是如何工作的。 我有两个 UIWindow在我的应用程序中。第一个是应用程序默认创建的主窗口。第二个叫modalW
我们可以在 native mac 应用程序中使用 NSWindow 和 NSVisualEffectView 轻松创建这种效果,但是我们如何在为 MacCatalyst 构建的应用程序中实现呢? 当然
我已将 Objective-C 文件转换为 Swift,现在转换为: if isCaptured { let colourView = UIView(frame: window.frame)
我有一个 UIWindow 对象,我想将其显示在 Storyboard顶部。我是这样做的 - UIWindow *webWindow = [[UIWindow alloc] initWithFrame
我正在处理一个大约有 7/8 年历史的旧 Xcode 项目,我已将其迁移到 Objective-C 2.0 并支持 ARC。在我参与该项目之前,该项目不支持自动布局(这是在它发布之前)。我已经设法解决
我创建了一个正在加载的 UIWindow,当我开始加载时,我会调用它并 makeKeyAndVisible 。完成后,我 makeKeyAndVisible 我的主 UIWindow。但我的问题是,执
当发送keyboardWillShowNotification时,我可以通过向上移动系统键盘的窗口来将系统键盘移动到选项卡栏上方。然而,当 View Controller 嵌入到导航 Controll
尝试在 IOS 应用程序的关键 UIWindow 上添加一个覆盖窗口。但是,新的覆盖 UIWindow 似乎在任何地方都不可见。 不过,基于 lldb,它似乎已成功添加: (lldb) po UIAp
我有一个自定义的 UIWindow,它是我自己的状态栏,所以我想隐藏状态栏并显示我的状态栏。我有 override var prefersStatusBarHidden: Bool { ret
我有一个应用程序,其中有两个 UIWindow 实例的用例。第一个实例运行所有正常的应用程序交互,但我需要能够在没有用户交互的情况下,无论用户在应用程序中做什么,都能够在所有其他内容之上呈现一个 Vi
我在另一个 UIWIndow 上添加了一个新的 UIWIndow 以显示一个 View ,但它没有显示任何内容,而且屏幕变得有点模糊。这是代码: UIWindow* topWindow = [[UIW
我只是想继承 UIWindow 以便拦截一些通知。除了下面列出的代码,我还进入 MainWindow.xib 并将 UIWindow 对象更新到我的子类。它加载正常,问题是我的选项卡栏上的选项卡没有响
我总是看到对应用程序“窗口”的引用,而且我看到 AppDelegates 通常有一个名为“窗口”的 UIWindow 属性。所以我只是想知道如何感知这个 UIWindow 对象。我看到它是 UIVie
我正在向我的应用添加一个额外的 UIWindow。我的主窗口正确旋转,但我添加的这个附加窗口不旋转。 根据当前设备方向旋转 UIWindow 的最佳方法是什么? 最佳答案 您需要自己为 UIWindo
我认为这很容易,因为 [myWindow resignKeyWindow] 和 [self.window makeKeyAndVisible] 但我想不是……你们知道该怎么做吗? 谢谢:) 最佳答案
在我的应用程序中,我想在主 UIWindow 上创建一个新的 UIWindow,我写如下,但它不起作用。首先,我创建一个 UIWindow 作为主窗口,然后将其设置为键和可见,然后创建一个新的 UIW
我读过的每个视频教程和书籍都会显示以下代码,用于将 UIView 添加到 UIWindow。 [窗口addSubview:self.viewController.view]; 我对上面代码的理解是,将
我的应用程序中需要三个不同的部分:登录屏幕、主屏幕和横向模式下的屏幕,所有这些都完全不同。我看到苹果坚持认为应用程序应该有一个窗口,所以我想问:为此最好使用什么?三扇大 window ,还是风景?层次
我需要查看窗口上的触摸事件,因此我将 UIWindow 子类化以创建 MYWindow 类。我正在重写 sentEvent 函数来接收窗口上的触摸事件,所有这些都工作得很好。为了实现这一目标,我做了以
我是一名优秀的程序员,十分优秀!