2017-02-20 3 views
0

私は起動画面を表示するLaunchImageアセットを持っています。私の問題は、起動イメージが消えてから、最初のビューコントローラのwebviewがコンテンツを読み込み始めます。ウェブビューの読み込みが終了するまで、起動イメージを表示するにはどうすればよいですか?

ウェブビューの読み込みが終了するまで、起動イメージを表示するにはどうすればよいですか?

マイ設定:

enter image description here

enter image description here

+0

http://stackoverflow.com/questions/5618163/displaying-splash-screen-for-longer-than-default-secondsこれをチェックしてください。 –

答えて

2

あなたは起動画面タイマまたは "それが表示されるはずですどのくらい" に関連する何かを変更することはできません。それはあなたのコントロールではありません。

1:あなたのUIWebViewwebViewDidFinishLoad(_:)

2にデリゲートメソッドを追加します。UIImageViewまたはカスタムUIViewとしてあなたの「起動画面」のコピーを表示します。デリゲートメソッドが終了したときに起動したときにはhideになります。 iOSの8で実行され、後に、代わりのUIWebViewを使用してのWKWebViewクラス を使用するアプリで

注意。さらに、 WKPreferencesプロパティjavaScriptEnabledを、JavaScriptを実行しないと思われるファイル をレンダリングする場合は、falseに設定することを検討してください。 WKWebViewデリゲートのために

webView(_:didFinish:)

+0

ありがとうございます。しかし私はあなたの方法でもう一つの質問があります:私の起動イメージリソースを、異なる画面サイズに適合する適切なイメージリソースに変換する方法はありますか?イメージビューで起動イメージリソースを表示することは可能ですか? – Sayakiss

+0

@SayakissカスタムUIViewを作成し、起動画面と同じイメージを追加し、ビューがロード中であることを示すUIActivityIndi​​catorを追加した方が良いでしょう。そうしないと、ユーザーがクラッシュしたり、つかれていると思うかもしれません。 –

+0

「あなたのlaunchscreenと同じイメージを追加する」:イメージリソースには3つのイメージ(1x、2x、3x)しかありませんが、起動イメージリソースには10以上のイメージがあります。別の画面サイズのために? – Sayakiss

0

あなたは打ち上げappearence時間についての制御を持っていません。しかし、あなたが同じ起動イメージで画面をカバーする独自のUIImageViewを作成し、UIWebViewはあなたがUIWebViewのデリゲートメソッド試してみてください

+0

ありがとうございます。しかし私はあなたの方法でもう一つの質問があります:私の起動イメージリソースを、異なる画面サイズに適合する適切なイメージリソースに変換する方法はありますか?イメージビューで起動イメージリソースを表示することは可能ですか? – Sayakiss

+0

イメージファイルまたはxibの場合は、起動画面で使用されているとおりに正確に使用できます。起動画面は、イメージを表示するビューです。同じように模倣します。あなたが手動で行う場合は、起動イメージがそれらのすべてに合っている場合、画面サイズに関しては適合するでしょう。 – giorashc

+0

'画像ファイルかxibの場合:' LaunchImage'リソースです(私の質問で画像を見てください) – Sayakiss

0

をロードし終わったら、それを削除することができます: -

- (void)webViewDidStartLoad:(UIWebView *)webView 
- (void)webViewDidFinishLoad:(UIWebView *)webView 

とUIImageView(含まれているを使用しますあなたの起動イメージ)、あなたのUIWebViewが完全にロードされるまでそれを表示し続ける。

0

起動画面に別のUIImageViewを「類似」したくない場合は、表示コントローラーを起動画面と同じようにインスタンス化して使用することができます。

let sb = UIStoryboard(name: "Launch Screen", bundle: nil) // the storyboard of your launch screen 
let vc = sb.instantiateViewController(withIdentifier: "launchScreen") // the storyboard id (remember to set it first!) 

// present the vc 
navigationController?.present(vc, animated: false, completion: nil) 

// when you're done loading 
vc.dismiss(animated: false, completion: nil) 

しかし、あなたは今、アプリが実際に何かをやっているユーザーをさせなければならないので、これは、非常に良い習慣ではないことに注意してください。何らかのローディングスピナーなどを表示することを検討してください。

関連する問題