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 に答える