我想构建一个collectionView,当用户旋转设备而不将设备的方向锁定为纵向模式时,它将所有单元格保持在适当的位置。我曾尝试使布局无效,但无济于事。谢谢您的帮助。
答案 0 :(得分:1)
根据您的评论,您想使所有屏幕保持纵向,但是要知道设备是否处于横向而不需要旋转界面(对于摄像头屏幕),应该...
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
}
}
}
}