addSubview(_:)
とremoveFromSuperView()
をしてしまうと、結果としてビューが外された最後の状態でUIが更新されます。download()
は同期的な処理ですか?最も望ましいと思われる解決はdownload()
メソッドを非同期処理にして完了時点でコールバックを受け取れるようにして、addSubview(_:)
を呼んでからdownload()
、ここまでは同じで、removeFromSuperView()
をダウンロード完了のコールバック内で呼ぶことです。addSubview(_:)
の直後に一度イベントループに処理を戻してUIを更新して、download()
、removeFromSuperView()
を呼びます。view.addSubview(uiView) DispatchQueue.main.async { self.download() uiView.removeFromSuperView() }