彼ら。私はそのような問題を抱えています:ビューにフルスクリーンを使用する必要があります。だから私は使う
[_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 ;
}