Как настроить направление прокрутки в соответствии с ориентацией

#ios #swift

#iOS #swift

Вопрос:

Я пытаюсь реализовать разные направления прокрутки в зависимости от ориентации (проведите пальцем влево для альбомной ориентации и проведите пальцем вверх для портретной ориентации). Это работает, за исключением того, что сначала, когда представление отображается в новой ориентации, вы должны сначала выполнить прокрутку в другой ориентации. Только 1 раз. Можете ли вы помочь мне понять, что происходит?

Это мой код:

 override func viewDidLoad() {
        super.viewDidLoad() 
let swipe = UISwipeGestureRecognizer(target: self, action: #selector (orientation(_:)))
        swipe.direction = [.up, .left]
        self.view.addGestureRecognizer(swipe)


    }
    @objc func orientation (_ sender : UISwipeGestureRecognizer) {
        if UIDevice.current.orientation.isLandscape {
            sender.direction.remove(.up)
            swipeLabel.text = "Swipe left to share"
            print("je suis landscape et left")
            sender.direction = .left
            shareScreenShot()

        }else if UIDevice.current.orientation.isPortrait {
            swipeLabel.text = "Swipe up to share"
            print("je suis portrait et up")
            sender.direction = .up
            shareScreenShot()

        }
  

Комментарии:

1. Вместо того, чтобы требовать жест салфетки для установки направления, почему бы не использовать viewWillLayoutSubviews , который будет вызываться при изменении ориентации, для этого?

2. Действительно, я обратился к этому решению. Спасибо.