こんにちは私はプログラムで幅を取得する方法があるかどうか疑問に思っています。
私はiphone3gs、iphone 4、ipadを収容するのに十分一般的なものを探しています。また、幅は、デバイスが縦向きか横向きか(ipadの場合)に基づいて変更する必要があります。
誰かがこれを行う方法を知っていますか?私はしばらく探していました...ありがとう!
こんにちは私はプログラムで幅を取得する方法があるかどうか疑問に思っています。
私はiphone3gs、iphone 4、ipadを収容するのに十分一般的なものを探しています。また、幅は、デバイスが縦向きか横向きか(ipadの場合)に基づいて変更する必要があります。
誰かがこれを行う方法を知っていますか?私はしばらく探していました...ありがとう!
回答:
例えば。
CGFloat width = [UIScreen mainScreen].bounds.size.width;
ステータスバーを含めたくない場合は、applicationFrameプロパティを確認してください(幅には影響しません)。
更新: UIScreen(-boundsまたは-applicationFrame)は、現在のインターフェイスの向きを考慮していないことが判明しました。より正しいアプローチは、UIViewにその境界を尋ねることです-このUIViewがそのViewコントローラーによって自動回転されていると仮定します。
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
CGFloat width = CGRectGetWidth(self.view.bounds);
}
ビューがViewControllerによって自動回転されていない場合は、インターフェイスの向きを確認して、ビューの境界のどの部分が「幅」と「高さ」を表しているかを判断する必要があります。frameプロパティは、UIWindowの座標空間でビューの長方形を提供することに注意してください。これは(デフォルトでは)インターフェイスの向きを考慮していません。
CGRect screen = [[UIScreen mainScreen] bounds];
CGFloat width = CGRectGetWidth(screen);
//Bonus height.
CGFloat height = CGRectGetHeight(screen);
これは、3行のコードで実行できます。
// grab the window frame and adjust it for orientation
UIView *rootView = [[[UIApplication sharedApplication] keyWindow]
rootViewController].view;
CGRect originalFrame = [[UIScreen mainScreen] bounds];
CGRect adjustedFrame = [rootView convertRect:originalFrame fromView:nil];
iOS 9.0以降、方向を確実に取得する方法はありません。これは、ポートレートモード専用に設計したアプリに使用したコードであるため、アプリをランドスケープモードで開いた場合でも、正確です。
screenHeight = [[UIScreen mainScreen] bounds].size.height;
screenWidth = [[UIScreen mainScreen] bounds].size.width;
if (screenWidth > screenHeight) {
float tempHeight = screenWidth;
screenWidth = screenHeight;
screenHeight = tempHeight;
}
このコードを使用すると役立ちます
[[UIScreen mainScreen] bounds].size.height
[[UIScreen mainScreen] bounds].size.width
画面サイズを取得する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
}
これらは、標準機能として次のものに含まれています。