2011-08-12 20 views
1

我目前使用[[UIScreen mainScreen] bounds].size.width和高度來獲取從服務器獲取新圖像(填滿屏幕)的屏幕寬度和高度。我的問題是,似乎邊界不會改變方向的變化。所以,如果我旋轉設備,那麼即使設備現在處於橫向,它仍然會給我縱向寬度/高度。我不想根據當前的方向對屏幕寬度/高度進行硬編碼。有沒有一種方法可以檢查將正確反映方向更改的屏幕寬度和高度?根據方向更改獲取屏幕寬度/高度的正確方法是什麼?

回答

2

你可以通過

int h = self.view.frame.size.height; 
int w = self.view.frame.size.width; 
+0

最簡單的辦法讓你的高度和寬度,它的偉大工程,唯一的一點是它的self.view。 frame.size.width和height。 – Millec8

+1

請注意,如果您的視圖控制器位於UITabBarController,UINavigationController,UISplitViewController等內部,則不會爲您提供* screen *界限。 – Anomie

0

[UIScreen mainScreen].bounds.size返回不旋轉的邊界。您可以使用convertRect:fromView:方法(對fromView傳遞nil)在適當的屏幕上顯示UIView以調整旋轉等。

0

我一直在努力,我們已經陷入有幾次這樣的問題,一個應用程序的寬度和高度,所以我希望我能幫助:

  1. 首先,確保您使用的是UIViewController來管理您的圖像。
  2. 其次,確保您在該視圖控制器上的-shouldAutorotateToInterfaceOrientation:的實現返回YES
  3. 確保您使用的是UIImageView,而不是爲你的圖片的UIImage,然後嘗試在圖像視圖的上海華設置autoresizesSubviews(這是視圖控制器的視圖)YES
  4. 如果圖片調整大小,但不符合您的喜好,請嘗試圖像視圖的autoresizingMask
  5. 如果在步驟3之後圖像未自動調整大小,請嘗試執行willRotateToInterfaceOrientation:duration:並以編程方式設置圖像的幀。請記住,它的超級視圖(UIViewController's視圖)尚未旋轉,因此其框架尚未更新。
  6. 最後,如果這不起作用,請嘗試willAnimateRotationToInterfaceOrientation:duration:,雖然我不太清楚這種方法和前者的區別。

希望這有幫助,並讓我知道你的結果!

布魯斯

2
做到這一點

最好的辦法可能是:

CGSize appSize = [UIApplication sharedApplication].keyWindow.rootViewController.view.bounds.size; 

,還可以使用appSize.height高度和appSize.width的寬度 這將返回總是充滿了最頂層的視圖的取向調整大小全屏幕,除了可能排除狀態欄,取決於你的狀態欄和wantFullscreen設置。

0

嘗試從applicationFrame

UIScreen.mainScreen()。applicationFrame.size.height