视图控制器视图半透明设置后背景立即变黑问题求助
解决弹出导航控制器后半透明背景变黑的问题
这个问题我碰过好多次啦!核心原因是UINavigationController默认的模态展示样式会完全覆盖底层视图,导致你设置的半透明背景刚显示就被全屏的不透明背景替换了。下面给你两种靠谱的解决办法:
方法一:修改导航控制器的模态展示样式
在present导航控制器之前,把它的modalPresentationStyle设为.overFullScreen或者.overCurrentContext,这样导航控制器的视图会叠加在底层视图之上,半透明效果就能保留住:
@IBAction func didTapShowButton(_ sender: UIButton) { let popupVC = PopupViewController() let navController = UINavigationController(rootViewController: popupVC) // 设置模态展示样式,让视图叠加在底层之上 navController.modalPresentationStyle = .overFullScreen present(navController, animated: true, completion: nil) }
方法二:额外设置导航控制器背景为透明
如果方法一效果还不够理想,可以再把导航控制器自身的视图背景设为透明,彻底避免额外的不透明层干扰:
@IBAction func didTapShowButton(_ sender: UIButton) { let popupVC = PopupViewController() let navController = UINavigationController(rootViewController: popupVC) navController.modalPresentationStyle = .overFullScreen // 让导航控制器的视图背景完全透明 navController.view.backgroundColor = .clear present(navController, animated: true, completion: nil) }
补充一句:iOS 13及以上版本里,.overFullScreen是最推荐的选项,它既能完美保留半透明效果,又能正确处理模态视图的生命周期逻辑。
内容的提问来源于stack exchange,提问作者Isuru
相关产品推荐
相关产品推荐

