iPhone 12/13 mini设备下UIViewController模态弹出后无法正常dismiss问题
解决方法
该问题为Xcode旧版本内置iPhone 12 mini、iPhone 13 mini模拟器的特有渲染BUG,真机不会复现,可通过以下方案处理:
- 将
modalPresentationStyle从.overFullScreen修改为.fullScreen,同步适配BViewController的背景透明逻辑即可修复dismiss异常 - 若业务必须保留
.overFullScreen样式,可针对mini模拟器做特殊兼容,修改dismiss代码如下:
@IBAction func backTOVC(_ sender: UIButton) { // 仅对mini模拟器做强制移除兼容,不影响真机逻辑 if UIDevice.current.name.lowercased().contains("mini") { self.view.removeFromSuperview() } self.dismiss(animated: true, completion: nil) }
- 升级Xcode到14.3及以上版本,苹果官方已在后续Xcode版本中修复了该模拟器的兼容问题
补充说明:如果仅做常规业务上线,可直接验证真机表现,真机不存在该异常无需额外兼容。
内容的提问来源于stack exchange,提问作者KAREEM MAHAMMED
相关产品推荐
相关产品推荐

