グラデーションレイヤーを作成するために、既存のコントローラーの上にUIViewを積み重ねました。ただし、ビューをロードすると、新しいUIViewが(当然)すべての上に表示されます。
関連コード:
class ViewController: UIViewController {
@IBOutlet weak var myGradientView: GradientView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidLayoutSubviews() {
self.myGradientView.gradientWithColors(UIColor.whiteColor(), UIColor.blueColor())
}
}
私はいくつかの検索を実行しましたが、私は Objective-Cの答え を使用することを説明しました:
[parentView bringSubviewToFront:view];
Objective-Cがわからないので、Swiftにはかなり慣れていないので、誰かがこれに何らかの光を当てることができれば感謝しています。
SwiftでUIViewのzインデックスまたはスタック順序を変更するにはどうすればよいですか?
UIView
documentation を調べることをお勧めします。サブビューの順序を操作するためのいくつかのメソッドがリストされています。
bringSubviewToFront(_:) sendSubviewToBack(_:) removeFromSuperview() insertSubview(_:atIndex:) insertSubview(_:aboveSubview:) insertSubview(_:belowSubview:) exchangeSubviewAtIndex(_:withSubviewAtIndex:)
あなたの状況では、あなたが試すことができます:
self.view.sendSubviewToBack(myGradientView)
// self is your view controller in this case.
または、IBでmyGradientView
を作成したため、ビュー階層を変更して、一番上に表示されるビューを変更できます。以下に説明する図を示します。
お役に立てば幸いです。
上記の答え
bringSubviewToFront(_:) sendSubviewToBack(_:)
変更されました:
In Swift 3.
view.sendSubview(toBack:yourUIView)
view.bringSubview(toFront:yourUIView)