web-dev-qa-db-ja.com

iOSのコードを使用して画面サイズを取得する方法は?

IPhoneの画面サイズを取得して計算するにはどうすればよいですか?

45
haisergeant

UIScreenのインスタンスでboundsプロパティを使用できます:

CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;  
CGFloat screenWidth = screenSize.width;
CGFloat screenHeight = screenSize.height;

ほとんどの人はメイン画面が必要です。 TVに接続されたデバイスがある場合、代わりにUIScreensを反復処理し、それぞれの境界を取得することができます。

詳細は IScreen class docs をご覧ください。

98
Tim

「Swift」ソリューションは次のとおりです:(Swift 3.x)に更新)

_let screenWidth  = UIScreen.main.fixedCoordinateSpace.bounds.width
let screenHeight = UIScreen.main.fixedCoordinateSpace.bounds.height
_

これは、ピクセルではなくポイントでレポートし、「常にポートレートアップ方向のデバイスの画面サイズを反映します」 (Apple Docs) 。 UIAnnoyinglyLongDeviceOrientationを気にする必要はありません!

幅と高さにデバイスの向きを反映させる場合:

_let screenWidth  = UIScreen.main.bounds.width
let screenHeight = UIScreen.main.bounds.height
_

ここでは、画面が縦向きか横向きかによって、幅と高さがフロップ値を反転します。

そして、ここではポイントではなくpixelsで測定された画面サイズを取得する方法があります:

_let screenWidthInPixels = UIScreen.main.nativeBounds.width
let screenHeightInPixels = UIScreen.main.nativeBounds.height
_

これも「縦向きのデバイスに基づいています。この値は、デバイスが回転しても変化しません。」 (Apple Docs)

Swift 2.x以前では、_UIScreen.main_の代わりにUIScreen.mainScreen()を使用する必要があることに注意してください。

21
mogelbuster

このコードを使用してiOS8で修正します。

float SW;
float SH;
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (( [[[UIDevice currentDevice] systemVersion] floatValue]<8)  && UIInterfaceOrientationIsLandscape(orientation))
{
    SW = [[UIScreen mainScreen] bounds].size.height;
    SH = [[UIScreen mainScreen] bounds].size.width;
}
else
{
    SW = [[UIScreen mainScreen] bounds].size.width;
    SH = [[UIScreen mainScreen] bounds].size.height;
}
8
Guru

Swift画面サイズを取得する方法:

var screenWidth: CGFloat {
    if UIInterfaceOrientationIsPortrait(screenOrientation) {
        return UIScreen.mainScreen().bounds.size.width
    } else {
        return UIScreen.mainScreen().bounds.size.height
    }
}
var screenHeight: CGFloat {
    if UIInterfaceOrientationIsPortrait(screenOrientation) {
        return UIScreen.mainScreen().bounds.size.height
    } else {
        return UIScreen.mainScreen().bounds.size.width
    }
}
var screenOrientation: UIInterfaceOrientation {
    return UIApplication.sharedApplication().statusBarOrientation
}

これらは標準関数 here として含まれています。

これもドキュメントに記載されています。

1
Esqarrouth

特定のビューのサイズを知りたい場合はboundsUIViewプロパティを使用し、デバイスの画面サイズを知りたい場合は[[UIScreen mainScreen] bounds]を使用します。

1
tobiasbayer

上記と似ていますが、少し冗長です。

CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width;
CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height;
1
simon_smiley
float screen_Height;
float screen_Width;

if ([[[UIDevice currentDevice] systemVersion] floatValue]  >= 8) {
    screen_Height = [[UIScreen mainScreen] bounds].size.height;
    screen_Width = [[UIScreen mainScreen] bounds].size.width;
} else {
    screen_Height = ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.height : [[UIScreen mainScreen] bounds].size.width);
    screen_Width = ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.width : [[UIScreen mainScreen] bounds].size.height);
}
1
Bobby

UIScreenの境界を使用するのは良い方法ですが、CGGeometry関数を使用して、CGRectのデータに直接アクセスするのではなく、アクセスする必要があります。 CGGeometrydocs を参照してください。

CGRect screenBound = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = CGRectGetWidth(screenBound);
CGFloat screenHeight = CGRectGetHeight(screenBound);
0
Lukas Spieß

仲間のXamariansの場合-Xamarin.iOS + C#で画面サイズを取得する方法は次のとおりです。

var screenBound = UIScreen.MainScreen.Bounds;
var screenSize = screenBound.Size;
var height = screenSize.Height;
var width = screenSize.Width;
0
Martin Zikmund

[[UIScreen mainScreen] bounds]は、デバイスの向きを考慮しない物理的な画面サイズを返します。

現在の向きに従って画面サイズを取得する必要がある場合は、 画面の向きに依存する高さと幅を取得する方法 をご覧ください。

0
Mike

現在の方向を考慮したい場合、次を使用します。

float screen_width;
float screen_height;
float vers = [[[UIDevice currentDevice] systemVersion] floatValue];
UIInterfaceOrientation orient = [UIApplication sharedApplication].statusBarOrientation;
if (vers < 8 && UIInterfaceOrientationIsLandscape(orient))
{
    screen_height = [[UIScreen mainScreen] bounds].size.width;
    screen_width = [[UIScreen mainScreen] bounds].size.height;
}
else
{
    screen_width = [[UIScreen mainScreen] bounds].size.width;
    screen_height = [[UIScreen mainScreen] bounds].size.height;
}
0
CpnCrunch