2014-12-31 39 views
1

免責聲明:這不是任何問題的重複。在發佈之前,我已經通過this question方向鎖定啓用時檢測設備的實際方向(iOS)

通常我們使用設備方向屬性或狀態欄屬性來找出設備的實際方向。但是,當設備上的方向鎖定已啓用時,我沒有得到正確的方向。即使我將設備轉換爲橫向模式,我總是會獲得方位值縱向

當在設備上啓用方向鎖定時,是否有辦法找出設備的實際方向?

注意:UIAccelerometer現已棄用。歡迎任何關於CoreMotion的幫助。

+0

我沒有答案抱歉。但我想我會指出/輕輕提醒,有deviceOrientation和interfaceOrientation。在我看來,'旋轉鎖'可能是主要原因(與那些不支持旋轉的應用程序一起),需要兩個單獨的概念而不是一個呃:) – Jef

+0

你已經回答了你自己的問題。您可以使用CoreMotion來計算設備方向。具體而言,您需要俯仰,滾轉和偏航值 –

+0

Core motion的問題是方向值太多。 –

回答

1

這裏是我想出了:

CMMotionManager *cm=[[CMMotionManager alloc] init]; 
cm.deviceMotionUpdateInterval=0.2f; 
[cm startDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue] 
         withHandler:^(CMDeviceMotion *data, NSError *error) { 

           if(fabs(data.gravity.x)>fabs(data.gravity.y)){ 
             NSLog(@"LANSCAPE"); 
            if(data.gravity.x>=0){ 
             NSLog(@"LEFT"); 
            } 
            else{ 
             NSLog(@"RIGHT"); 
            } 

          } 
          else{ 
            if(data.gravity.y>=0){ 
             NSLog(@"DOWN"); 
            } 
            else{ 

             NSLog(@"UP"); 
            } 

           } 

}]; 
+0

謝謝老人,但黃金解決方案 – Aznix