IPhoneの画面サイズを取得して計算するにはどうすればよいですか?
UIScreenのインスタンスでbounds
プロパティを使用できます:
CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;
CGFloat screenWidth = screenSize.width;
CGFloat screenHeight = screenSize.height;
ほとんどの人はメイン画面が必要です。 TVに接続されたデバイスがある場合、代わりにUIScreensを反復処理し、それぞれの境界を取得することができます。
詳細は IScreen class docs をご覧ください。
「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()
を使用する必要があることに注意してください。
このコードを使用して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;
}
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 として含まれています。
これもドキュメントに記載されています。
特定のビューのサイズを知りたい場合はbounds
のUIView
プロパティを使用し、デバイスの画面サイズを知りたい場合は[[UIScreen mainScreen] bounds]
を使用します。
上記と似ていますが、少し冗長です。
CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width;
CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height;
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);
}
UIScreen
の境界を使用するのは良い方法ですが、CGGeometry
関数を使用して、CGRect
のデータに直接アクセスするのではなく、アクセスする必要があります。 CGGeometry
docs を参照してください。
CGRect screenBound = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = CGRectGetWidth(screenBound);
CGFloat screenHeight = CGRectGetHeight(screenBound);
仲間のXamariansの場合-Xamarin.iOS + C#で画面サイズを取得する方法は次のとおりです。
var screenBound = UIScreen.MainScreen.Bounds;
var screenSize = screenBound.Size;
var height = screenSize.Height;
var width = screenSize.Width;
[[UIScreen mainScreen] bounds]は、デバイスの向きを考慮しない物理的な画面サイズを返します。
現在の向きに従って画面サイズを取得する必要がある場合は、 画面の向きに依存する高さと幅を取得する方法 をご覧ください。
現在の方向を考慮したい場合、次を使用します。
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;
}