我有一个.h文件,我正在使用我的项目,我#import文件,然后使用#define vars正确布局我的视图。
这就是我的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
我想知道当用户正在浏览某个页面并且它正确地自行放置时,他们决定将其旋转为如何使用正确的值更新ScreenWidth和ScreenHeight,并且还要更新当前视图,即&#39;正在轮换?
答案 0 :(得分:1)
这可以更好地实现为静态方法,而不是#defines:
+(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;
}
}
要知道屏幕何时旋转,您可以使用NSNotificationCenter订阅UIApplicationWillChangeStatusBarOrientationNotification
和UIApplicationDidChangeStatusBarOrientationNotification
:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];
并实现处理通知的方法:
-(void)didRotate:(NSNotification*)notification
{
// Layout your views
}