簡體   English   中英

UIVisualEffectView在LoadVIew()中

[英]UIVisualEffectView In LoadVIew()

我正在嘗試將visualEffect添加到在iOS10和早期版本上運行良好的視圖...但是在iOS 11上它崩潰了。 錯誤原因如下:

 has been added as a subview to <UIVisualEffectView: 0x7feabe90d170; frame = (0 0; 375 812); layer = <CALayer: 0x6000006257c0>>. Do not add subviews directly to the visual effect view itself, instead add them to the -contentView."

我正在使用以下代碼:

 override func loadView() { 
    super.loadView()

    // create the blur view
    let blurView = UIVisualEffectView(effect: effect)
    if let oldView = view {
        blurView.frame = view.frame
        oldView.translatesAutoresizingMaskIntoConstraints = false
        blurView.contentView.addSubview(oldView)
        blurView.contentView.pinParentAllDirections(oldView)
    }
    view = blurView
}

奇怪的是,當我在viewDidload中添加此代碼時,它正在傳遞崩潰...任何人都可以幫助我了解主要問題,或者我錯過了iOS11的任何術語。

我們不應該從loadView函數調用super.loadView()

https://developer.apple.com/documentation/uikit/uiviewcontroller/1621454-loadview

如果使用Interface Builder創建視圖並初始化視圖控制器,則不得重寫此方法。

我們有一些類似的東西,也通過將代碼移出loadView方法來解決。 因為loadView用於構造視圖,而不是要自定義視圖的時間點。

出於所有目的和目的,切勿重寫loadView或自己調用它。 相反,您應該重寫awakeFromNib()或viewDidLoad(),以進一步自定義視圖,然后將其顯示在屏幕上。

您還可以最后一秒進行修飾,以使其在viewWillAppear(animated :)中的任何位置出現。

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM