2016-01-11 2 views
5

UINavigationControllerの最初のビューである簡単な設定テーブルビューがあります。UINavigationControllerでmodalPresentationStyle = .FormSheetでプッシュするとSFSafariViewControllerが正しく表示されない

設定UINavigationControllerを.FormSheet modalPresentationStyleで表示します。つまり、iPhoneではフルスクリーンを使用し、iPadではモーダルで中央に表示します。

ここで、Settingsテーブルの行の1つでSFSafariViewControllerをナビゲーションスタックにプッシュしたいとします。

これはiPhoneでうまくいきますが、iPadではうまくいきません。計算されたスクリーンショット:

enter image description here

注SFSafariViewControllerナビゲーションバーの部分(バック設定ボタンで)ナビゲーションバーの下に表示されていること。画像の赤い矩形を参照してください。

let urlText = "http://www.apple.com"  
let url = NSURL(string: urlText)!  
let safariViewController = SFSafariViewController(URL: url) 
self.navigationController?.pushViewController(safariViewController, animated: true) 

iPhoneでは、SFSafariViewControllerのナビゲーションバーは表示されません。これは、私の使用例に最適です。

これを正しく動作させるための魔法の設定はありますか?

+0

あなたは良い解決策を見つけることになりましたか?私は非常に似た問題を抱えていて、あなたがこれをどのように扱ったか知りたいと思っています –

+1

@ SijmenMulderいいえ、私は解決策を見つけられませんでした。残念ながら私のWebページを望みどおりにレンダリングしなかったWKWebViewを使用することに戻りました。何とか、SFSafariViewControllerlerのレンダリングがうまく機能しました。 – Daniel

+0

恥です。知らせてくれてありがとうございます! –

答えて

3

SFSafariViewControllerは、Apple OSのiOS9.0以上のバージョンで使用できます。 あなたの問題によると、あなたは、いくつかの問題に直面しているSFSafariViewControllerは独自のナビゲーションバー、UISearchbar、UIBarButton.whenを埋め込むれる

enter image description here view.because SFSafariViewControllerとあなたのナビゲーションバーにいくつかのギャップを示して、あなたは、あなたのアプリのナビゲーションバーのViewController各地からSFSafariViewControllerを押しますSFSafariViewControllerナビゲーションバーを表示します。 enter image description here

enter image description here

1

これはまさに修正はありませんが、ここで私はこのような状況でやってしまったものです。代わりに、私は次のよう

let sfController = SFSafariViewController(URL: NSURL(string:"url")!) 
sfController.modalPresentationStyle = .FormSheet 
sfController.modalTransitionStyle = .CrossDissolve 
presentViewController(sfController, animated: false, completion: nil) 

をやっているナビゲーションコントローラ上でそれを押すの私はそれがそうでない場合は、右からのビューコントローラに持参しようとしたアニメーションをオフにする必要がありました。 CrossDissolveはアウトバウンドアニメーションを処理します。あなたの場合と同じように、これはあなたの望むものではないかもしれません。あなたはURLをあいまいにして、navbarをあなたのnavbarをカバーし、SFSafariViewController navbarを表示する場所に保ちたいと思っています。本当にSFSafariViewControllerはそのように使用されていないはずですが、WKWebViewを使用することで、あなたの場合はより意味をなさないはずです。

pushViewControllerを使用すると、SFSafariViewControllerの完了ボタンを押したときにpushViewControllerを使用してナビゲーションコントローラ全体が表示されなくなるので、presentViewControllerは表示する方が良いでしょう。

0

私はそれは、既存のUINavigationControllerプッシュSFSafariViewControllerに不可能であることを認識するようになりました。独自のナビゲーションバーとそのツールバーが付属しています。

それは、既存のナビゲーションコントローラに押し込まれ(少なくともiOSの10+)iPhone上多少大丈夫仕事をしていますが、あなたがユニバーサルアプリでこれをやっているならば、それはiPad上問題があるので、注意してください。

具体的には、 ツールバーがSFSafariViewControllerにあります。代わりに、Safariのオープンボタンがナビゲーションバー自体の右上に直接表示されます。 SFSafariViewControllerは、それを押し込んでいるナビゲーションコントローラを所有していないか使用していませんので、はサファリボタンで表示されています。このになります。

関連する問題