1

[UIScreen mainScreen].bounds.size.heightiPadアプリのレイアウトモードに関係なく、常に1024を返すのはなぜですか?

レイアウトモードに基づいて動的に生成されたカスタムビューを作成しようとしていますが、常に1024の高さが返されますか?

+ (CGRect)rectForView {
NSLog(@"The height is %f", [UIScreen mainScreen].bounds.size.height );
return CGRectMake( 0.0f, 0.0f, [[UIScreen mainScreen]bounds].size.width, (([UIScreen mainScreen].bounds.size.height ) - 100));
}
4

3 に答える 3

5

これが私がそれを修正するためにしたことです。

+ (CGRect)rectForView {

if (UIInterfaceOrientationIsLandscape([[UIDevice currentDevice] orientation])) {

    return CGRectMake( 0.0f, 0.0f, [[UIScreen mainScreen]bounds].size.height, (([UIScreen mainScreen].bounds.size.width ) - 100));

}

NSLog(@"The height is %f", [UIScreen mainScreen].bounds.size.height );
return CGRectMake( 0.0f, 0.0f, [[UIScreen mainScreen]bounds].size.width, (([UIScreen mainScreen].bounds.size.height ) - 100));
}
于 2012-10-10T17:56:16.320 に答える
4

これは境界の正しい機能であり、起動した方向で画面のサイズを返すと思います。方向に依存するフレームの適切なサイズについては、viewControllerまたはナビゲーションコントローラーを確認する必要があります。

于 2012-10-10T17:39:00.063 に答える
4

ポートレートモードでは常に座標を返します。別の向きがある場合は、変更する必要があります。

UIScreen *screen = [UIScreen mainScreen];
CGRect screenRect = screen.bounds; // implicitly in Portrait orientation.

if (UIDeviceOrientationIsLandscape(orientation)) {
    CGRect temp;
    temp.size.width = screenRect.size.height;
    temp.size.height = screenRect.size.width;
    screenRect = temp;
}

上記のコードは、オンラインで利用できる無料のアラートビューであるOLGhostAlertView.mから直接取得したものですが、座標を取得する方法についてのアイデアを提供します。

于 2012-10-11T17:55:34.947 に答える