2015-01-05 14 views
0

我有這個應用程序主要顯示照片。UIInterfaceOrientationLandscapeRight的屏幕移位

該應用程序最初是爲iOS 3.1編寫的,在發佈前升級到4。從那以後它一直沒有被觸及。現在,API的所有者應用了一些不符合他們想法的更改,我不得不更新該應用程序。所以我必須一起去iPhone 5和6和6以及iOS 7和8更新。我在iphone 4,5和6+尺寸的模擬器中觀察到這種行爲。

肖像看起來不錯。 景觀左看起來也很好。 風景右轉被搞砸了。顯然,它看起來好像整個屏幕都向左移動了。

Landscape left, OK Landscape right, shifted Portrait, OK

這很奇怪,因爲我不知道任何事情,我會做的景觀向左或向右的不同。我所做的只是在任何人像和任何風景方向之間不同。

它在舊版本中正常工作。但坦率地說,我再也不能複製它了,因爲我沒有訪問舊的xcode和sdk版本。但是該應用程序已經存儲了多年,在現代設備和現代操作系統版本上運行良好。更

有點背景資料,以防萬一它是非常重要的:

該應用程序是基於中的UITabBar一樣,但在這種觀點是不可見的。

圖像是可滾動的。它被放在一個視圖的三倍大小的屏幕上,前後的圖像視圖分別位於左側和右側。這三個圖像的視圖分別位於屏幕或窗口大小的滾動視圖內。這個概念仍然起作用,它只是移位。

當我在調試器或NSLog中檢查視圖項目的框架時,它們似乎都是正確的,分別從(0.0/0.0)或開始。

底部帶有導航到相關函數及其視圖控制器的四個按鈕的視圖在每次旋轉時都以編程方式重新分配,以及帶有文本信息的疊加層。所有的工作都應該如此,但是它在這個方向上轉移了。那麼,每次旋轉都會以編程方式對所有視圖進行佈局。

沒有定義約束條件。 iOS6/7的三角洲都設置爲0.

該應用「想要全屏」。通過點擊圖像,所有UI項目消失並重新出現在下一個選項卡上。 (只需通過設置.hidden屬性,除了導航欄,這是使用setNavigationBarHidden管理的:animated:在動畫中是YES)即使在移位視圖中也可以正常工作。

我正在用盡想法。

回答

0

雖然我把這些問題的所有細節都放在一起,但最終有一個想法來解決我的問題。

該問題與隱藏標籤欄有關。我無法使用隱藏標籤欄的常規方式,因爲在向下導航到與底部疊加視圖上的按鈕關聯的功能時,它不會再出現。

因此我做了一些破解。我沒有經常隱藏它,但將標籤欄移出屏幕。 AND:這是我爲左右景觀和景觀做了不同的唯一事情。我只是搜索了不變的名字並找到了它。

顯然,操縱標籤欄視圖在舊iOS版本中存在缺陷。 (或者在舊的SDK版本,我仍在努力是重要的細節)

爲了克服缺陷的標籤欄視圖被修改這樣的景觀權:

[self.tabBarController.view setFrame:CGRectMake(0-kTabBarHeight,0,width+kTabBarHeight,height)]; 

這似乎沒有任何意義但幾年前在編寫應用程序時也曾幫助我解決類似問題。 現在,我把它改爲:

[self.tabBarController.view setFrame:CGRectMake(0,0,width+kTabBarHeight,height)]; 

這對景觀留下了一樣。

對於這段時間我分開iOS版本> = 8.0和更小。但是我會再次檢查舊設備,稍後可能會回到此答案。

我留下了發佈的問題,因爲我在這裏也發現了原始的「黑客」,所以我猜測其他人在分別更新到ios 8或SDK 8時也會遇到同樣的問題。

感謝收聽。