LoginSignup
0
1

More than 3 years have passed since last update.

最前面のViewを検出・参照する[Swift]

Posted at

状況

最前面のViewControllerを取得する記事はたくさんあるけど
Viewに関しては見つからなかったので僕なりのやり方を残しておきます

対策

GirlsViewはcustomViewです

流れ

frontViewに存在するViewのなかで最後に配置したView(最前面のView)を入れておく->右スワイプする->ViewとViewの配列を消去する
Viewを配置するたびにzPositionを上げている-> 最後に配置したView = 最前面のView になります

private func setSwipe(girlsView: GirlsView) {
        let rightSwipe = UISwipeGestureRecognizer(target: self, action: #selector(didSwipe(sender:)))
        rightSwipe.direction = .right
        girlsView.addGestureRecognizer(rightSwipe)
}

@objc func didSwipe(sender: UISwipeGestureRecognizer) {
        if sender.direction.contains(.right) {
            print("Right!")
            getFrontView().removeFromSuperview()
            girlsViewArray.removeLast()
        }
}

private func getFrontView() -> GirlsView {
        var frontView: GirlsView?
        Array(0..<girlsViewArray.count).forEach {
            if let view: GirlsView? = girlsViewArray[$0] {
                frontView = view!
            }
        }
        return frontView!
    }
override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        Array(0..<girlsViewArray.count).forEach {
            view.addSubview(girlsViewArray[$0]) //$0は0 ~ girlsViewArray-1
            girlsViewArray[$0].layer.zPosition = CGFloat($0) + 1.0
            setSwipe(girlsView: girlsViewArray[$0])
            //省略
        }
    }
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1