Как вы удерживаете все элементы collectionView на месте, когда устройство вращается, не блокируя устройство в портретном режиме? - PullRequest
0 голосов
/ 28 сентября 2018

Я хотел бы создать collectionView, который удерживает все ячейки на месте, когда пользователь поворачивает устройство, не фиксируя ориентацию устройства в портретном режиме.Я пытался сделать макет недействительным, но безрезультатно.Спасибо за помощь.

1 Ответ

0 голосов
/ 28 сентября 2018

Исходя из вашего комментария, вы хотите, чтобы все экраны были в портретной ориентации, но знаете, находится ли устройство в горизонтальной ориентации, не поворачивая интерфейс (для экрана камеры), вам следует…

  • set Поддерживаемые ориентации интерфейса до Portrait in your info.plist
  • определить ориентацию устройства с помощью CMMotionManager

    let motionManager = CMMotionManager()
    var currentOrientation = UIDeviceOrientation.portrait
    
    func montiorOrientation() {
        motionManager.startAccelerometerUpdates(to: OperationQueue()) { data, error in
            if let error = error {
                print("CM orientation error - \(error)")
                return
            }
            let acceleration = data!.acceleration
    
            let orientation: UIDeviceOrientation = fabs(acceleration.y) < fabs(acceleration.x) ?
                (acceleration.x > 0 ? .landscapeRight : .landscapeLeft) :
                (acceleration.y > 0 ? self.currentOrientation : .portrait) // Ignore portraitUpsideDown
    
            if orientation != self.currentOrientation {
                DispatchQueue.main.async {
                    self.currentOrientation = orientation
                }
            }
    
        }
    }
    
...