2017-10-05 64 views
2

我們有一個應用程序,它使用連接到音頻插孔(或iPhone7或更高版本中的閃電端口)的附件。它需要以某些方向運行,具體取決於iOS設備。無法將界面方向旋轉爲iPhone上的肖像倒置X

目前沒有任何問題在模擬器或實際設備中爲任何iPhone設置設備方向,但iPhoneX模擬器除外。

當前設置方向代碼:

- (BOOL)shouldAutorotate { 
    return YES; 
} 

- (UIInterfaceOrientationMask)supportedInterfaceOrientations 
{ 
    //device checks omitted 
    return UIInterfaceOrientationMaskPortraitUpsideDown; 
} 

Target settings with orientations enabled

堆棧跟蹤:

TF uncaught exception reason : Supported orientations has no common orientation with the application, and [RootNavigationController shouldAutorotate] is returning YES 
2017-10-05 09:35:02.692945+0200 [65045:74145368] *** Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and [RootNavigationController shouldAutorotate] is returning YES' 

這是工作的iPhone5,iPhone6,iPhone6 +,iPhone7和iPhone7 +設備和iPhone8模擬器。它似乎不是iOS11的問題,因爲我的iPhone7目前正在運行iOS11。我目前唯一遇到的問題是iPhoneX模擬器。

+0

在iOS 11.2上,不應再調用shouldAutorotate。在UIViewController的文檔中,所有舊的旋轉代碼似乎都被棄用:「截至iOS 8,所有旋轉相關的方法都被棄用」。我很難在這方面嘗試阻止在iPhone X上旋轉。 – RickJansen

回答

2

看來,iPhone X將不會支持顛倒的方向;見https://forums.developer.apple.com/message/268015。一位蘋果員工說:「這是設計的,我們將在未來的版本中更新文檔以反映這一點。」

您仍然可以獲得方向更改通知,至少在SIM卡中,但正如您發現的那樣,如果您採取行動,可能會發生壞事。在我的情況下,我沒有得到一個例外,但我的用戶界面不能正確重繪。

我添加代碼來檢測顛倒的iPhone X並防止UI重繪;它在SIM卡中運行,我們必須等待,看它是否能在真實設備上運行(幸運的是,我的顛倒使用案例只涉及耳機插孔設備,因此在iPhone X上丟失倒置對我來說不是什麼大問題)。

結果是,我們這些使用照明端口傳感器,想要在最前面的iPhone將不能提供與「小」iPhone相同的可用性,至少不是沒有一些嚴重乏味的UI jiggery - 包含大量仿射變換以將元素旋轉和/或翻轉到的pokery出現顛倒,同時仍然符合電話認爲的它的正在做。嘆。

+0

我想蘋果懶得想出一個有意義的方法來調整iPhone X的** split **狀態欄的佈局,顯示在屏幕的無刻痕底部邊緣上。 –