使用系统通知 orientationDidChangeNotification 获取屏幕方向,前提是:手机不能设置强制竖屏,如果设置了强制竖屏,是不会调用这个通知的。本文是在用户手机设置了强制竖屏的情况下,将用户竖屏录制的视频,根据屏幕旋转方向,将视频旋转成横屏显示。比如:如下图,拍摄的视频/图片是横着拍的
无论是摄像头在左边/右边/上边/下边拍摄的视频或图片,在播放视频或显示图片的时候,如下图显示:
代码实现
屏幕旋转方向监听,使用 CoreMotion 每隔一秒钟获取一次视频的方向,视频方向改变时,发送通知。
import Foundation
import CoreMotion
class XZDeviceOrientation: NSObject {
private let sensitive = 0.77
private let motionManager = CMMotionManager()
private var direction: UIInterfaceOrientation = .portrait
// 每隔一个间隔做轮询
func start() {
print("------走了start")
motionManager.deviceMotionUpdateInterval = 1.0
if motionManager.isDeviceMotionAvailab