1. ホーム
  2. ios

[解決済み] 背景を透明にしたSwiftモーダルビューコントローラ [重複]。

2022-12-21 22:44:01

質問

私はこのトピックは非常に人気があることを知っているが、私はプログラミング言語で少しiniciate問題、事実は私がまだコードを置く場所を理解していないということです。さて、私は全体のケースを伝えるでしょう。

ボタンをクリックすると、ViewControllerが画面上に表示されますが(モーダルタイプに従う)、背景は透明です。ラベルのついた青いViewだけが表示されます。このViewControllerが表示されているときは、背景が透明ですが、遷移が完了すると、すぐに黒い背景のままになります。すでに不透明オプションを無効にし、いくつかのオプションをテストしましたが、このトラブルシューティングは何もありません。

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

動画は、ケースにシミュレータでテストしたものです( https://www.youtube.com/watch?v=wT8Uwmq9yqY ).

swiftを始めて、Xcodeでのプログラミングの仕方でまだかなり迷っているのですが、ある質問の回答を読んで、これを解決するために以下のようなコードを書きました。

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

このコードはどこに置けばいいのでしょうか?

どのように解決するのですか?

このようにすればよいでしょう。

メインのビューコントローラーで

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

モーダルビューコントローラーで

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

ストーリーボードで作業している場合。

でストーリーボードセグエを追加するだけです。 Kind に設定します。 Present Modally をモーダルビューコントローラに追加し、このビューコントローラに以下の値を設定します。

  • 背景色 = クリアカラー
  • 描画 = 不透明チェックボックスのチェックを外す
  • Presentation = 現在のコンテキストの上に表示

として クラッシュアロット がコメントで指摘しています。を確認してください。 セグエ のみを使用する。 Default の両方に対して PresentationTransition . 使用方法 Current Context に対して Presentation を指定すると、モーダルは透明のままではなく、黒くなります。