web-dev-qa-db-ja.com

Swiftのウィンドウビューの上部のサブビュー

画面全体(ナビゲーションバーを含む)にUIViewを配置したい。このビューは、不透明度0.3の黒になります。これを実行して、画面のコンテンツを暗くし、その上にビューをプッシュします。私はこのコードを使用しています:

UIApplication.sharedApplication().keyWindow?.addSubview(darkView)

これは予想どおり画面全体をカバーします。ただし、この暗いビューの上に別のビューを配置します。これを行う方法はありますか?私がしようとするすべては、暗いビューの下にあるビューになります。どんなポインターでも本当にありがたいです!ありがとう

32
Kex

それは本当に簡単です。

別のビューをwindowに追加するだけです!そして、追加した最初のビューの上にあります。たとえば、次のコードは黒のビューと白のビューを追加します。

let window = UIApplication.sharedApplication().keyWindow!
let v = UIView(frame: window.bounds)
window.addSubview(v);
v.backgroundColor = UIColor.blackColor()
let v2 = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 50))
v2.backgroundColor = UIColor.whiteColor()
window.addSubview(v2)

追加した最初のビューのサブビューとして新しいビューを追加することもできます。

let window = UIApplication.sharedApplication().keyWindow!
let v = UIView(frame: window.bounds)
window.addSubview(v);
v.backgroundColor = UIColor.blackColor()
let v2 = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 50))
v2.backgroundColor = UIColor.whiteColor()
v.addSubview(v2)

Swift 4

let window = UIApplication.shared.keyWindow!
    let v = UIView(frame: window.bounds)
    window.addSubview(v);
    v.backgroundColor = UIColor.black
    let v2 = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 50))
    v2.backgroundColor = UIColor.white
    v.addSubview(v2)

シンプル!

64
Sweeper

Swift 3の場合、これを使用します。

let window = UIApplication.shared.keyWindow!
window.addSubview(someView)
17
Mario Jaramillo

Swift 4IViewControllerをサブビューとしてIWindowに追加

このコードは、View Controllerをサブビューとして追加し、単純なアニメーションでウィンドウ全体をカバーするためのものです。

let appDelegate = UIApplication.shared.delegate as! AppDelegate
var customReviewPopup = ReviewPopupViewController.init(nibName: "ReviewPopupViewController", bundle: Bundle.main)

self.appDelegate.window?.addSubview((customReviewPopup.view)!)
self.customReviewPopup.view.frame = (self.appDelegate.window?.bounds)!
self.customReviewPopup.view.alpha = 0
self.customReviewPopup.view.isHidden = true

UIView.animate(withDuration: 0.3, delay: 0, options: .transitionCrossDissolve, animations: {
    self.customReviewPopup.view.isHidden = false
    self.customReviewPopup.view.alpha = 1
}, completion: nil)
3
Pramod More