2014-05-19 64 views
0

重繪視圖佈局,我有我使用以爲我的項目.h文件,我#IMPORT的文件,然後使用中的#define瓦爾正確佈局自己的看法。如何在旋轉

這是我的ScreenSize.h文件的樣子。

#import <Foundation/Foundation.h> 

#define ScreenWidth ((int) [UIScreen mainScreen].bounds.size.width) 
#define ScreenHeight ((int) [UIScreen mainScreen].bounds.size.height) 

@interface ScreenSize : NSObject 

@end 

我想知道,當用戶瀏覽到一個頁面,它勾畫出自己正確,然後他們決定旋轉它如何與正確的價值觀,以更新屏幕寬度和ScreenHeight ..同時也更新當前這是旋轉?

任何幫助,將不勝感激。

+0

視圖控制器在屏幕更改方向時自動更改界限 - 爲什麼需要屏幕大小而不是視圖控制器大小? – michaels

+0

我需要的屏幕大小爲我所有的xibs的是專爲iphone,所以如果我看的viewController大小我不能部署在iPad上的應用程序。 – HurkNburkS

+0

爲什麼沒有單獨的iPad XIB?就像@ michael所說,視圖控制器通常只是給你的視圖旋轉一個新的大小,然後你根據新的大小做一個佈局。 – nielsbot

回答

1

這將能夠更好地實現爲靜態方法,而不是#define語句:

+(CGFloat)screenWidth 
{ 
    if(UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)){ 
     return [UIScreen mainScreen].bounds.size.width; 
    }else{ 
     [UIScreen mainScreen].bounds.size.height; 
    } 
} 

+(CGFloat)screenHeight 
{ 
    if(UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)){ 
     return [UIScreen mainScreen].bounds.size.height; 
    }else{ 
     [UIScreen mainScreen].bounds.size.width; 
    } 
} 

要知道,當屏幕旋轉時,您可以使用訂閱UIApplicationWillChangeStatusBarOrientationNotificationUIApplicationDidChangeStatusBarOrientationNotification NSNotificationCenter:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil]; 

而且實施方法來處理通知:

-(void)didRotate:(NSNotification*)notification 
{ 
    // Layout your views 
} 
+0

哦,看起來好多了,但是我不確定你訂閱狀態欄通知是什麼意思? – HurkNburkS

+0

@HurkNburkS我已經更新了我的答案 – michaels

+0

好的,謝謝......去嘗試,現在測試了這一點:) – HurkNburkS