web-dev-qa-db-ja.com

透明な背景を持つ高速モードView Controller

このトピックは非常に人気があることを私は知っていますが、私はプログラミング言語の中で少し複雑な問題を抱えています、事実は私がまだどこにコードを置くのかわからないということです。さて、私は全体のケースを教えてあげる:

enter image description here

モーダルSwiftを通常とは少し違った方法で作成しようとしています。ボタンをクリックすると、ViewControllerが(モーダルタイプに従って)画面に表示されますが、背景は透明になります。ラベル付きの青い表示のみが表示されます。このViewControllerが表示されると背景は透明になりますが、トランジションが完了するとすぐに黒い背景のままになります。すでにopaqueオプションを無効にし、いくつかのオプションをテストしましたが、このトラブルシューティングは何もしません。

いくつかは私を助けることができる?

ビデオはケース( https://www.youtube.com/watch?v=wT8Uwmq9yqY )のシミュレータでのテストです。

私はSwiftから始めています、そして私はまだXcodeでプログラムする方法にかなり迷っています、私はこれを解決するために以下のコードを持っている質問に対する答えを読みました:

self.presentingViewController.providesPresentationContextTransitionStyle = YES;
self.presentingViewController.definesPresentationContext = YES;
modal.modalPresentationStyle = UIModalPresentationOverCurrentContext;

このコードをどこに置きますか?

93
user5046034

あなたはこれのようにそれをすることができます:

メインのView Controllerの場合:

func showModal() {
    let modalViewController = ModalViewController()
    modalViewController.modalPresentationStyle = .overCurrentContext
    presentViewController(modalViewController, animated: true, completion: nil)
}

モーダルView Controllerの場合:

class ModalViewController: UIViewController {
    override func viewDidLoad() {
        view.backgroundColor = UIColor.clearColor()
        view.opaque = false
    }
}

ストーリーボードを使用している場合は、

KindPresent Modallyに設定したストーリーボードSegueをモーダルView Controllerに追加し、このView Controllerで次の値を設定します。

  • 背景=クリアカラー
  • Drawing = Opaqueチェックボックスのチェックを外します
  • プレゼンテーション=現在のコンテキスト以上

As Crashalot が彼のコメントで指摘したように:segueDefaultPresentationの両方にのみTransitionを使うようにしてください。 PresentationCurrent Contextを使用すると、モーダルは透明のままではなく黒くなります。

246
joern