2016-10-05 4 views
0

Apple의 설명서에 따르면 이미지 선택 도구는 세로 모드 만 지원합니다.UIImagePicker 오버레이 뷰 감지 방향

하지만 사용자 정의 오버레이 뷰가 장치 방향을 감지하도록하고 싶습니다. 사용자 지정 단추/이미지를 각각 회전시킵니다.

애플도 그렇게하고있다, 카메라 앱. 가로 모드에서 기기를 회전하면 앞면 카메라 버튼 전환 및 사진 미리보기도 자동으로 회전합니다.

달성 할 수있는 방법이 있습니까?

답변

1

글쎄, 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 
       } 
      } 
     } 
    } 
}