Apple의 설명서에 따르면 이미지 선택 도구는 세로 모드 만 지원합니다.UIImagePicker 오버레이 뷰 감지 방향
하지만 사용자 정의 오버레이 뷰가 장치 방향을 감지하도록하고 싶습니다. 사용자 지정 단추/이미지를 각각 회전시킵니다.
애플도 그렇게하고있다, 카메라 앱. 가로 모드에서 기기를 회전하면 앞면 카메라 버튼 전환 및 사진 미리보기도 자동으로 회전합니다.
달성 할 수있는 방법이 있습니까?
Apple의 설명서에 따르면 이미지 선택 도구는 세로 모드 만 지원합니다.UIImagePicker 오버레이 뷰 감지 방향
하지만 사용자 정의 오버레이 뷰가 장치 방향을 감지하도록하고 싶습니다. 사용자 지정 단추/이미지를 각각 회전시킵니다.
애플도 그렇게하고있다, 카메라 앱. 가로 모드에서 기기를 회전하면 앞면 카메라 버튼 전환 및 사진 미리보기도 자동으로 회전합니다.
달성 할 수있는 방법이 있습니까?
글쎄, ImagePicker를 사용하는 컨트롤러에서 간단한 것을 시도해 보았습니다. 더 나은 해결책이 있다면 알려주세요.
func checkRotation(){
if UIDevice.currentDevice().orientation.isLandscape.boolValue {
print("landscape")
} else {
print("portrait")
}
}
override func viewDidLoad(){
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self,
selector: #selector(self.checkRotation),
name: UIDeviceOrientationDidChangeNotification,
object: nil)
}
편집 :. UIDevice.currentDevice과 사투를 벌인 후() 방향으로 나는 무작위로 바르게받은 오리엔테이션의 결과를하지 않은 것으로 나타났습니다. 그래서 나는 that one solution CMMotionManager를 사용하여 stackoverflow에 게시했습니다. observer와 async_patch를 사용하여 약간의 변경을했습니다.
SNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.accelerationGetOrientation), name: UIDeviceOrientationDidChangeNotification, object: nil)
func accelerationGetOrientation(){
uMM = CMMotionManager()
uMM.accelerometerUpdateInterval = 0.2
uMM.startAccelerometerUpdatesToQueue(NSOperationQueue()) { p, _ in
if p != nil {
if abs(p!.acceleration.y) < abs(p!.acceleration.x) {
//LANDSCAPE
dispatch_async(dispatch_get_main_queue()) {
//Do UI Changes
}
}
else {
//PORTRAIT
dispatch_async(dispatch_get_main_queue()) {
//Do UI Changes
}
}
}
}
}