[PR]
2024年11月21日
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
1つのコードでiPhone/iPod touch/iPadに対応する
2010年04月26日
1つのコードで全てのiPhone OSデバイスをサポートできればソースコードの管理が楽になります。今回の記事はそんな方法を紹介します。今後のことは分かりませんが、現状ではこの分岐方法を使えば全てのデバイスに対応するコードが書けます。まず例としてコードの一部を示します。
始めの行のマクロでOSのバージョン判定を行います。iPhone OSのバージョンが3.2以上だと、次にユーザーンターフェースタイプの判定を行います。この2つの判定を組み合わせる事で実行されるデバイスによりアプリケーションの動作を変える事が出来ます。
この他にも[[UIDevice currentDevice] systemVersion]で返ってくる文字列を使って判定する方法もありますが、その方法はお勧めできません。その方法ではiPhone SimulatorでiPhone側の動作確認を行なおうとアクティブSDKを3.1.3などに切り替えた場合、iPad用のコードの中にiPhone SDK 3.2で追加されたメソッドがあると、そんな命令無いぞとビルドエラーが起きてしまうからです。
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// iPad
UIGraphicsBeginImageContext(CGSizeMake(900.0,675.0));
} else {
// iPhone or iPod touch(iPhone OS バージョン3.2以上)
UIGraphicsBeginImageContext(CGSizeMake(360.0,240.0));
}
#else
// iPhone or iPod touch(iPhone OS バージョン3.2未満)
UIGraphicsBeginImageContext(CGSizeMake(360.0,240.0));
#endif
この他にも[[UIDevice currentDevice] systemVersion]で返ってくる文字列を使って判定する方法もありますが、その方法はお勧めできません。その方法ではiPhone SimulatorでiPhone側の動作確認を行なおうとアクティブSDKを3.1.3などに切り替えた場合、iPad用のコードの中にiPhone SDK 3.2で追加されたメソッドがあると、そんな命令無いぞとビルドエラーが起きてしまうからです。
PR
Comment