ios - 如何找到给定视图显示在哪个 UIScreen 上?
问题描述
在 iOS 上使用UIScreen
不是很常见(用于检查规模和特征)。UIScreen.main
可以在需要时轻松访问这些属性。
在 iOS 上拥有多个屏幕肯定不太常见,但在 AirPlay 和带有 USB-C 的 iPad 上的外接显示器上是可能的。屏幕实例列表位于 下UIScreen.screens
。
有没有一种简单的方法可以从给定的 中知道UIView
它正在显示在哪个屏幕上?
像这样的东西会很有用:
extension UIView {
var screen: UIScreen {
// Return screen where the view is being displayed (might be `.main`)
}
}
extension UIScreen {
func contains(view: UIView) -> Bool {
// Return true if `view` is being displayed in this screen instance.
}
}
通过显示,我的意思是视图在视图层次结构中。或者,可以针对给定的视图控制器询问相同的问题,这也可以解决问题。
解决方案
如果视图是 a 的后代UIWindow
,则获取视图window
,然后获取窗口screen
,如下所示:
extension UIView {
var screen: UIScreen? {
window?.screen
}
}
extension UIScreen {
func contains(view: UIView) -> Bool {
view.screen === self
}
}
推荐阅读
- flutter - 扑影难看
- python-3.x - Matplotlib 如何用相同的轴规范做一个或多个子图
- python - t 测试 groupby pandas 之后的多列
- ios - Xcode 11 XCUITest 无法获取匹配的快照:获取主窗口时出错 kAXErrorServerNotFound
- amazon-cloudfront - com.amazonaws.services.cloudfront.model.CNAMEAlreadyExistsException
- r - 将 .dat 文件读入 R
- iis - 在 IIS 10 / Windows Server 2019 中以编程方式回收应用程序池
- python - 如何使用代码在网格上显示电影
- openframeworks - 当我有关于坐标的文本文件时,如何在 openframeworks 中绘制贝塞尔曲线
- java - 我需要一个字符串并输出字符串中出现最多的单词