iOS 13 UIViewController模态表示阴影

时间:2019-09-26 13:04:46

标签: ios uiviewcontroller ios13

我在iOS 13中模态展示了视图控制器。根视图具有清晰的背景:

view.backgroundColor = .clear

具有白色背景的子视图具有一些顶部偏移,例如:

enter image description here

一切都很好,但是当我尝试通过向下滑动来消除它时,我看到了呈现的视图控制器的轻微可见阴影:

enter image description here

是否可以在模态演示中消除此阴影?

2 个答案:

答案 0 :(得分:1)

我有办法给你

extension UIViewController {
    func removeBackgroundForParents() {
        var superview = view.superview
        while superview != nil {
            superview?.layer.backgroundColor = UIColor.clear.cgColor
            superview?.layer.shadowColor = UIColor.clear.cgColor
            superview = superview?.superview
        }
    }
}

并在您的视图控制器中使用它。

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    
    removeBackgroundForParents()
}

答案 1 :(得分:0)

更新:经进一步调查,这似乎无法更改。它是iOS的私有UIKit View设置,是iOS 13中的新增功能。请参见https://developer.apple.com/videos/play/wwdc2019/224/

的19:50

对于我自己的应用程序/游戏,我将寻求创建自定义UIModalPresentationStyle以实现所需的外观。

您还可以通过简单地将其呈现为.fullScreen或其他呈现样式来代替此新的工作表方法来缓解此问题。


我一直在试图自己找到答案。到目前为止,我只发现通过设置layer.shadowColor清除它可以解决此问题,但仅限于iPhone。我找不到如何在iPad上解决此问题。     覆盖func viewDidLoad(){         view.layer.shadowColor = UIColor.clear.cgColor     }