2017-09-26 4 views
0

나는 visualEffect를 iOS10 및 이전 버전에서 잘 작동하는보기에 추가하려고 시도하지만 iOS 11에서는 충돌이 발생합니다.UIVisualEffectView LoadVIew()

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." 

나는 다음과 같은 코드를 사용하고 있습니다 : 오류 이유는 아래와 같습니다 나는 그것이 충돌을 통과하는 것 viewDidLoad에이 코드를 추가 할 때 이상한 것은이

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 
} 

에게 ... 아무도 나를 도와주세요 주요한 문제를 이해했거나 iOS11의 내용을 놓친 것입니다.

답변

2

super.loadView()loadView에서 호출해서는 안됩니다. 당신이 당신의 뷰를 생성하고 뷰 컨트롤러를 초기화하는 인터페이스 빌더를 사용하는 경우

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

,이 메소드를 오버라이드 (override)하지 않아야합니다.

우리는 loadView 메소드에서 코드를 이동하여 비슷한 것을 고정 시켰습니다. loadView는 뷰를 사용자 정의하려는 시점이 아닌 뷰를 생성하는 데 사용됩니다.

+0

아니요 .. 전적으로 코드에서 왔습니다. –

+0

@Hani Ibrahim이 제안한 super.loadView()를 제거해 보셨습니까? – Rishi

+0

나는 지금 당장했지만 .. 어떤 이유로 든 loadView() 내부의 무한 루프에 들어갔다. –

1

모든 목적과 목적을 위해 절대로 loadView를 무시하거나 직접 호출해서는 안됩니다. 대신 awakeFromNib() 또는 viewDidLoad()를 재정 의하여 화면에 표시되기 전에보기를 추가로 사용자 정의해야합니다.

viewWillAppear (애니메이션 :)의 아무 곳에 나 나타나기 전에 마지막으로 두 번째로 터치 할 수도 있습니다.

행운을 빈다.