[英]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.