ios - 仅在 iOS 13.1 和 13.2 中弹出视图背后的奇怪阴影
问题描述
即使弹出背景颜色很明显,弹出视图后面有一个奇怪的阴影,此问题仅在 13.1 和 13.2 中发生,并且在 13 及以下版本中运行良好
我可以在视图层次结构中看到 UIWindow/UITransitionView/_UICutoutShadowView 具有仅在 13.1 中具有阴影图像的图像视图,但图像视图在 13 中具有空图像
controller.modalPresentationStyle = .popover
controller.popoverPresentationController?.permittedArrowDirections = .up
controller.popoverPresentationController?.delegate = controller
controller.popoverPresentationController?.sourceView = sourceView
controller.popoverPresentationController?.popoverBackgroundViewClass = FilterBackgroundView.self
present(controller, animated: false)
解决方案
在 UI 检查中有一个 _UICutoutShadowView 类型的 UIImageView 导致它。所以我设法通过创建一个自定义 UIPopoverBackgroundView 并隐藏这个幽灵视图来解决这个问题。
override func didMoveToWindow() {
super.didMoveToWindow()
if #available(iOS 13, *) {
// iOS 13 (or newer)
if let window = UIApplication.shared.keyWindow {
let transitionViews = window.subviews.filter { String(describing: type(of: $0)) == "UITransitionView" }
for transitionView in transitionViews {
let shadowView = transitionView.subviews.filter { String(describing: type(of: $0)) == "_UICutoutShadowView" }.first
shadowView?.isHidden = true
}
}
}
}
推荐阅读
- php - 如何在 PHP 中拥有一个所有用户都可以访问的变量?
- c++ - 如何使用类模板删除样板代码?
- python - 执行外部命令提示符脚本的 Python 子进程,尝试通过传递文件位置来运行一个 .exe 文件
- java - 如何使用 JDBCTemplate 和 MapParameterSource 创建动态 SELECT 子句?
- python - 如何使用 xpath Python selenium 查找元素
- utf-8 - FusionAuth 电子邮件主题不支持特殊语言字符
- rabbitmq - 启用了联合插件的请求响应场景
- php - 如何在 woocommerce_checkout_create_order_line_item 中回显变量?
- php - Yii2 - Null 时忽略“或”条件
- php - 你如何使用中间件('auth:api')测试路由?