新しいiPadMiniの画面サイズは7.9インチです。Retinaディスプレイはありますか?既存のxibとストーリーボードを自動的にスケーリングしますか、それともそれぞれの2つのバージョンを作成する必要がありますか?
iPhone 5と同じように扱いますか?
デバイスがiPadMiniを実行しているかどうかを確認するための定義または条件を作成するにはどうすればよいですか?
アプリは正常に動作します。ただし、非常に小さなUI要素がある場合。画面サイズが縮小されているため、再確認することをお勧めします。
アプリがiPad1またはiPad2で動作する場合、新しいiPadminiではそのまま動作します。miniには網膜ディスプレイはありません。アプリの観点からは、iPad2と同じです。
編集:アプリがiPadminiで実行されているかどうかを判断する方法を尋ねられました。これに対するAPIチェックはありません。画面サイズは役に立ちません。UI_USER_INTERFACE_IDIOM()
助けにはなりません。誰かが実際にそれを持っているまで、それUIScreenMode pixelAspectRatio
が何か違うかどうかを知る方法はありません(おそらくそれはiPad2と同じです)。
これにより、唯一の可能性が残ります。fromを取得し、machine
このuname()
値に対するチェックをハードコーディングすることです。これは決して望ましいアプローチではありません。そして、この記事を書いている時点では、その価値がどうなるかはわかりません。おそらく、第4世代iPadがiPad4、xであると仮定すると、iPad5、xです。
編集:これまでのところ、iPad miniがマシン名としてiPad2,5(はい、2つのコンマ5)とiPad2,6およびiPad2,7を返すという報告を見てきました。
iPad2解像度のアプリを作成します。新しいiPadMiniは、解像度が1024x768の非レチナです。つまり、iPad1またはiPad2ですでに動作していたアプリは、iPadMiniでも自動的に動作します。
Phil Schiller(Appleの上級副社長)は、iPad Miniを発表するプレスイベントで最高の発言をしたと思います(基調講演の約53:00)
どの画面サイズを選択しますか、またその理由は何ですか?そして、チームはこれについて本当に一生懸命考えました。開発者が何もしなくても、iPad用に作成されたすばらしいソフトウェアをすべて実行できるiPadが必要です...
その後、彼は次のように述べています。
...そして、ピクセルはまったく同じであるため、覚えやすくなっています。元のiPadとiPad2は1024x768で、新しいiPadMiniは1024x 768です。つまり、iPad用に作成されたすべてのソフトウェアはiPadMiniで変更なしで動作します。
したがって、要約すると、あなたの質問に答えるために、iPad MiniにはRetinaディスプレイがなく、追加の作業を行う必要はありません。iPad Miniは、iPad用に作成したストーリーボードまたはxibを利用します。
それから、検出に関しては、これを証明するものはまだ見つかりません(まだリリースされていないため)が、次のように「iPadMini」が出力されることは間違いありません。
NSLog(@"%@",[[UIDevice currentDevice] model]);
編集:
NSLog(@"\nMachine ID: %@\nModel: %@\nLocalized Model: %@",machineName(),[[UIDevice currentDevice] model],[[UIDevice currentDevice] localizedModel]);
NSString *machineName()
{
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
}
私の16GBiPadMini(Wifiのみ)では、これは次のようになります。
マシンID:iPad2,5
モデル:iPad
ローカライズされたモデル:iPad
iPad Miniと非レチナiPadが関係なく同じ画面サイズになる場合は、デバイスの画面がiPhone5かiPhone4かを判断するために使用されるようなものを使用できませんでした。
#define IS_WIDESCREEN5 ( [ [ UIScreen mainScreen ] bounds ].size.height == 568 )
#define IS_WIDESCREEN4 ( [ [ UIScreen mainScreen ] bounds ].size.height == 480 )
したがって、iPadMiniおよび非RetinaiPadの場合は、次のようにします。
#define IS_PAD ( [ [ UIScreen mainScreen ] bounds ].size.height == 512 )
網膜iPadの場合:
#define IS_RETINA_PAD ( [ [ UIScreen mainScreen ] bounds ].size.height == 1024 )
これにより、2種類の画面が区別され、スケールの目的で正確なモデルを特定する必要がなくなります。別の方法は自動レイアウトを使用することですが、それがないとコントロール感が良くなります。
これがあなたの質問の2番目の部分に役立つことを願っています。幸運を :)
何か違うことをする必要はありません。アップルが述べたように自動的に動作するはずです。解像度はiPadと同じです。
iPad miniは非網膜iPadと同じ解像度を使用し、iOSは1xグラフィックスを使用します。このリンクを参照してください... リンク
ipadminiの画像はipad1と2で同じですが、網膜画面にも@2x画像を使用することをお勧めします。なぜなら、アプリがApp Storeに掲載されると、人々が網膜ディスプレイを備えたiPadにアプリをダウンロードするのを止めることはできないからです。
したがって、この時点で、網膜と非網膜の両方の画像を作成する必要があります。
プログラム的には、iPadのRetinaディスプレイに個別のxibファイルは必要ありません。すべての画像アセットについてもimageName@2x.pngを保持してください。
iPad Mini(任意のモデル)を検出するために、私はこのコードを使用しています(iOS 10.xでテスト済み):
- (BOOL)isIPadMini {
return [[UIDevice currentDevice].name hasPrefix:@"iPad Mini"];
}