如何在旋转时重绘视图布局?

时间:2014-05-19 00:55:24

标签: ios objective-c uiview

我有一个.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;正在轮换?

1 个答案:

答案 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订阅UIApplicationWillChangeStatusBarOrientationNotificationUIApplicationDidChangeStatusBarOrientationNotification

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

并实现处理通知的方法:

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