伙计们。我有这样的问题:我的视图需要全屏显示。所以我用
[_activityIndicator setFrame:[[UIScreen mainScreen] applicationFrame]];
它的工作完美,但仅限于纵向视图。如果我的应用程序也必须在横向环境下工作怎么办?
伙计们。我有这样的问题:我的视图需要全屏显示。所以我用
[_activityIndicator setFrame:[[UIScreen mainScreen] applicationFrame]];
它的工作完美,但仅限于纵向视图。如果我的应用程序也必须在横向环境下工作怎么办?
你的应用有一个根视图控制器,它会随着设备旋转而旋转。所以根据根视图控制器的视图来设置你的框架。使用它的边界,而不是它的框架。
您可以通过主窗口获取对根视图控制器的引用。您可以通过共享应用程序获取对主窗口的引用:
UIWindow* theWindow = [[UIApplication sharedApplication] keyWindow];
UIViewController* rvc = theWindow.rootViewController;
UIView* mainView = rvc.view;
UIActivityIndicatorView* act =
[[UIActivityIndicatorView alloc] initWithFrame: mainView.bounds];
[mainView addSubview: act];
然后在属性中保留对活动指示器的引用并将其设置为旋转。
要获取当前屏幕边界,我使用:
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 ;
}