これは可能ですか?ピクセル数ではなく、インチ数が必要です。約160 ppiです。しかし、そうではありません。
使用可能な場合は、 IScreen または IDevice にありますが、存在しません。
EricaのUIDevice-extension の情報と、リストされた各デバイスの仕様から推測できます ここWikipediaで 。
これを提供するAPIはありません。最善の策は、デバイスの画面サイズ(ポイント単位)とiPadやiPhoneなどの場合はその推測から見て、画面サイズにハードコードされた値を使用することです。
画面サイズを取得するコードを次に示します。
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;
デバイスの向きによっては、幅と高さが入れ替わる場合があることに注意してください。
デバイスの画面サイズを推定する簡単な方法を次に示します。最新のデバイスについては更新されていますが、将来のデバイスでは失敗する可能性があります(すべての推測方法がそうであるように)。デバイスがミラー化されている場合も混乱します(ミラー化された画面サイズではなく、デバイスの画面サイズを返します)
#define SCREEN_SIZE_IPHONE_CLASSIC 3.5
#define SCREEN_SIZE_IPHONE_TALL 4.0
#define SCREEN_SIZE_IPAD_CLASSIC 9.7
+ (CGFloat)screenPhysicalSize
{
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
CGSize result = [[UIScreen mainScreen] bounds].size;
if (result.height < 500)
return SCREEN_SIZE_IPHONE_CLASSIC; // iPhone 4S / 4th Gen iPod Touch or earlier
else
return SCREEN_SIZE_IPHONE_TALL; // iPhone 5
}
else
{
return SCREEN_SIZE_IPAD_CLASSIC; // iPad
}
}
使用する必要があるかもしれません[UIScreen mainScreen].scale;
CGFloat scale = [UIScreen mainScreen].scale;
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat physicalWidth = screenRect.size.width * scale;
CGFloat physicalHeight = screenRect.size.height * scale;
おそらく、Jeff HayのコードはiPad Miniを含むように適合させることができます。秘trickは、デバイスのモデル識別子を取得することです。最新の非網膜iPadは「iPad2,4」で、最初のiPad miniは「iPad2,5」です。ここで確認する必要があるのは、画面のスケーリングが1.0(非網膜)かどうかだけです
このコードは将来にわたって使用できるわけではありませんが、モデル識別子のルールをいつでも追加できます。
#import <sys/utsname.h>
#define SCREEN_SIZE_IPAD_MINI 7.9
struct utsname systemInfo;
uname(&systemInfo);
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && strcasecmp(systemInfo.machine, "iPad2,5") >= 0 [[UIScreen mainScreen] scale] == 1.0)
return SCREEN_SIZE_IPAD_MINI
私が使用する「式」は
#define IS_iPhone5 ( fabs( (double)[ [ UIScreen mainScreen ] bounds ].size.height - (double)568 ) < DBL_EPSILON )
この質問を聞いたので、この問題を処理するためのオープンソースライブラリ IRLSize を作成しました。どちらの方向でも使用できます:実際のサイズでビュー(または画面全体)のサイズを測定するか、サイズをsetで測定します特定の実世界の次元へのビューの。