2016-07-16 5 views
1

要するに、私はWKWebViews(WebKit)を備えたSwift iOSアプリで典型的なブラウザ機能を構築しようとしています。私はすでにURL入力、ナビゲーションボタン、共有ボタン、ページタイトルなどを持つメニューバーを持つWKWebViewに基づいて機能するブラウザを既に持っています。Swiftのタブ付きiOS WebKitブラウザ

私が苦労しているのは、ブラウザのタブを作成することです。最初は、WKWebViewsが何らかの形でこれをサポートすることは確かに些細なようでした。さて、私は彼らがそうでないと言うことができる限り(見て、ハッキングwithswift、レイWenderlichなどを見て、複数のチュートリアルを試した+私はAppleのドキュメント+ stackoverflowをチェックした)

これは私がこれまで出てきたものです:

1)新しいタブを作成する/新しいURLを開くと、プログラムで新しいUIView + WKWebViewを作成する必要があります(現在のブラウザビューからサブクラスを作成する必要があります) =>これは、各WKWebView /タブアップルのドキュメントによると

2)すでに開いているタブのスクリーンショットイメージをプレビューpとして保存するには、コレクションビュー(またはスタックビューなど)が必要ですすべてのタブの年齢。セルはデリゲートを介して対応するWkWebViewにリンクされ、タブを閉じる(=削除する)閉じるボタンが必要です。

私はこれを考えすぎていますか?私がこの道を辿ると、複数のデリゲートとビューをコレクションビューに動的に結びつける方法を見つけなければならず、ユーザがタブとやりとりするたびにスクリーンショットを削除する必要があります。非常に乱雑に思えます。しかし、iOS上のChromeが遅くにWebKitに基づいていることを考えると、明らかに実行可能です。

この問題にどのように対処しますか?

PS iOSのChrome、Safariなどのタブの外観がわかっているので、モックアップは含まれていませんでした。

編集:私はちょうど新しいタブを開くことによって作成された複数のWKWebViews、追加/削除して表示するため、クリーンで賢明な方法を探しています - ちょうどChromeのようになどのiOSやSafari

+0

新しいウィンドウやタブが作成されると、WKWebviewは自動的に次を呼び出します。https://developer.apple.com/library/ios/documentation/WebKit/Reference/WKWebView_Ref/#//apple_ref/occ/instm/WKWebView/initWithFrame:configuration: – Brandon

+0

@Brandonはい、それは私が新しいスレッドで意味したものです:)各WKWebViewは別々のスレッドを持っています(私の問題は新しいWKWebViewsを作成するときに複数のビューを管理しています) UI(タブ)とコード(デリゲートなど)の両方で使用できます。つまり、ビューを作成してプレビューページにバインドする最もクリーンな方法は、タブを表示します。 – tech4242

答えて

0
のために

私はこれを今日解決しました:)メインのUIViewと複数のWKWebViewsがあります。これはフルスクリーンモードにするために「ズームイン」することができます。スクリーンショットなどは必要ありません。