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