0

伙计们。我有这样的问题:我的视图需要全屏显示。所以我用

[_activityIndicator setFrame:[[UIScreen mainScreen] applicationFrame]];

它的工作完美,但仅限于纵向视图。如果我的应用程序也必须在横向环境下工作怎么办?

4

2 回答 2

2

你的应用有一个根视图控制器,它会随着设备旋转而旋转。所以根据根视图控制器的视图来设置你的框架。使用它的边界,而不是它的框架。

您可以通过主窗口获取对根视图控制器的引用。您可以通过共享应用程序获取对主窗口的引用:

UIWindow* theWindow = [[UIApplication sharedApplication] keyWindow];
UIViewController* rvc = theWindow.rootViewController;
UIView* mainView = rvc.view;
UIActivityIndicatorView* act = 
    [[UIActivityIndicatorView alloc] initWithFrame: mainView.bounds];
[mainView addSubview: act];

然后在属性中保留对活动指示器的引用并将其设置为旋转。

于 2013-04-13T16:55:05.170 回答
1

要获取当前屏幕边界,我使用:

CGRect screenBoundsDependOnOrientation()
{
    CGRect screenBounds = [UIScreen mainScreen].bounds ;
    CGFloat width = CGRectGetWidth(screenBounds)  ;
    CGFloat height = CGRectGetHeight(screenBounds) ;
    UIInterfaceOrientation interfaceOrientation = [UIApplication sharedApplication].statusBarOrientation;

    if(UIInterfaceOrientationIsPortrait(interfaceOrientation)){
        screenBounds.size = CGSizeMake(width, height);
    }else if(UIInterfaceOrientationIsLandscape(interfaceOrientation)){
        screenBounds.size = CGSizeMake(height, width);
    }
    return screenBounds ;
}
于 2013-04-13T16:53:58.097 回答