Help us understand the problem. What is going on with this article?

iOS 10時代であっても3.5inchスクリーンは無視しない方が良い話と、古い実機なしでさっとレイアウトを確認する方法

More than 3 years have passed since last update.

3.5inchスクリーンは生きていた

手元には実機がiPhone 6/7 Plusしかないとします。さらにDeployment TargetがiOS 10以降で、完璧なモダン開発体制を整えました。例によりiPadはシカトです。だからUniversal Appではなく、iPhoneのみを対象にします。こうなるとiPhone 4s以前の3.5inchスクリーンサイズは完全無視でも良さそうですよね。iOS 10だから古い端末のシミュレーターももはやないので、2017年の世界ではあんな小さな画面は存在しないも同然だと思われました。この時点では。

しかし大きな落とし穴があって、iPad向けに最適化せずともiPadはiPhone互換モードでiPhone Appを動かすことができます。そしてApp StoreのレビュアーはこのiPhone互換モードでアプリをレビューするため、たとえiPhone向けのアプリであってもiPadでレイアウトが崩れているとリジェクトを食らいます。

さらに厄介なことに、iPad 9.7inch系やminiのiPhone 互換モードではiPhone 3GS/4/4s の 320×480 の比率と一致するサイズになるため、もう絶滅したと思われた 3.5inch がここでゾンビの如く襲いかかってくることになります。2017年にもなって、3.5inchです。でもこれは事実なので対処するしかありません。

App Store レビューガイドラインでも「iPhone向けのアプリケーションは可能な限りiPadでも実行できるようにしてください」という記載がありますが、これは可能な限りUniversal Appにしろ、という意味ではなく、iPhone互換モードでも適切に動作するよう保障せよ、という意味になるのかと思われます。ハードウェアの互換性としてはスクリーンサイズ以外にも色々考慮すべき点があるため、本来的にはより注意深く検討する必要があります。

2.4 ハードウェアの互換性 (2.4.1)
https://developer.apple.com/app-store/review/guidelines/jp/

実機がないがさっと古い端末のスクリーンサイズを再現する方法

UIWindowのframeを書き換えれば簡単にサイズを変えられます。AppDelegateあたりにコードを数行追加するだけです。でも解像度は動作機器に依存するのでPlus系なら3xになります。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    let screenBounds = UIScreen.main.bounds
    let targetSize = CGSize.init(width: 320, height: 480)
    window?.frame = CGRect.init(x: screenBounds.width / 2 - targetSize.width / 2, y: screenBounds.height / 2 - targetSize.height / 2, width: targetSize.width, height: targetSize.height)

    return true
}

320×480@iPhone 6 Plus

iPhone 無印/3G/3GS/4/4s サイズの再現。iPad 9.7inchなどのiPhone互換モードはこの比率を拡大したものになる。iPad 12inchはまた異なる。

以下はLandscape時。昔はこんなちっさい画面だった。

Screen Shot 2017-04-28 at 10.54.36.png

320×568@iPhone 6 Plus

iPhone 5/5s/5c/SE サイズの再現。

375×667@iPhone 6 Plus

iPhone 6/7 サイズの再現。

usagimaru
ソフトウェアデザイン
https://interactionmania.com
goodpatch
Goodpatch(株式会社グッドパッチ)は東京、ベルリン、台北にあるWeb / iOS / AndroidなどマルチデバイスアプリケーションのUIデザイン会社です。サービスやプロダクトの企画設計から関わりコンセプトメイキング、UX設計、プロトタイピング、UIデザイン、実装までワンストップで提供しています。
https://goodpatch.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした