先週は第 1 部について話し、アプリ「虾票票」を作ることを明確にしました~
今日は第 2 部に進み、iOS の発展の歴史について話し、その後 Xcode を使用して iOS プロジェクトを作成し、プロジェクト内でよく使われる設定について紹介します。
iOS の簡単な歴史#
iPhone 1 世代の誕生#
iPhone が登場する前、Apple の 2 つのスター製品は iMac と iPod でしたが、その時スティーブ・ジョブズは「iMac を小さくする」か「iPod を大きくする」ことで、携帯電話を作ることができないかと考えていました。このタスクは iMac チームと iPod チームに分けられましたが、最終的に誰が成功したかは意外かもしれません。
- iMac の強力な macOS システムに基づいて、初代 iPhone は非常に強力な性能を持っていました;
- そして、皆がさまざまな携帯電話のキーボードをどう作るかを考えている時、ジョブズはなぜキーボードをソフトウェアとして扱わないのかと考えていました。これにより、欲しいキーボードを持つことができ、さらに大きな画面と軽量化を実現しました。
2007 年の Apple の発表会で、ジョブズは3 つのフレーズを繰り返し言いました:An iPod、A Phone、An Internet Comunicate、An iPod、A Phone...
最終的に彼は 3 つの機能を 1 つのデバイスに統合し、私たちのiPhone 1 世代が誕生しました!
当時、彼はノートパソコンの概念を提唱したアラン・ケイが言った言葉にも触れました:
ソフトウェアに真剣な人々は、自分自身のハードウェアを作るべきだ。——1970
ソフトウェアに熱心な人々は、自分のハードウェアを作るべきだ。——1970
30 年以上後の 2007 年、Apple もそれを実現しました。その後、実際に Microsoft もそれを実現しました。同時に、Apple は自社のハードウェアのすべての詳細を把握しており、真の意味でソフトとハードの統合を実現しました。
バージョンの歴史#
- 最初の iOS バージョンは iPhone OS と呼ばれ、4 番目のメジャーバージョンで iOS と呼ばれるようになりました。この時、iPod OS、iPad OS、iPhone OS が統合されました;
- iOS 13 では、iPad のいくつかの独自の機能(例えば、分割画面、Apple Pencil のサポート、ファイルシステムなど)により、iPad OS が独立しました;
- 最近の iOS 15 まで続きます。
参考:iOS バージョンの歴史——Wiki
システムの特徴#
他の主流システムである Android と比較して、iOS の特徴は明らかです:
- 機種が少なく、ユーザーも相対的に少ない
- エコシステムが閉じており、自由や選択肢が少なく、安全性、使いやすさ、ソフトウェアの更新の迅速性が増しています
- 高級市場をターゲットにしており、ブランドのプレミアム感は人によって異なります
これは 2017 年に Apple が行った宣伝広告で、自社の特徴を強調し、やや誇張した方法で Apple の利点を表現しています。興味があれば見てみてください。
Switch To iPhone - Commercial by Apple——Youtube
iOS プロジェクトの作成#
さて、話を本題に戻しましょう~
新しいプロジェクトの作成#
すべての IDE に似て、新しいプロジェクトを作成するのはこの数ステップです:
- 新しい Xcode プロジェクトを作成
- iOS-App を選択し、Next をクリック
- プロジェクトに関する情報を入力
- Team は空白のままで大丈夫で、基本的には実機デバッグやアプリの公開時に必要です
- Organization Identifier は一般的に com.organization_name の形式です
- このプロジェクトは OC 言語に基づいており、Interface、Life Cycle、Language はすでに固定されています
- 2 つのチェックボックスは一時的に無視しても構いません
- Next をクリック
その後、パスを選択すれば新しいプロジェクトの作成が完了します。
次に、プロジェクト内でよく使われる 3 つの設定:アプリアイコン、起動画面関連、Info.plist の一般的な属性について紹介します。
アプリアイコン#
新しいプロジェクトを作成すると、デフォルトで 1 つのファイルが存在し、そこにアイコンをドラッグ&ドロップするだけです。
- 赤い矢印に注目
- プロジェクトを作成すると、Images.xcassets ファイルが自動的に生成されます。このファイルは多くの画像セットを作成し、画像を保存するために使用されます
- 自分の画像を AppIcon という画像セットにドラッグすることで、アプリアイコンが設定されます
- 自分のアプリアイコンをどうデザインするかは、個人の自由です~
- PS
- 豊富なアイコン素材が欲しい場合は、iconfont—— アリババのアイコンライブラリを見てみてください
- 注意深いあなたは、画像セットにさまざまな比率のアイコンがあることに気づくかもしれません。これらはPrepoアプリ(App Store にあります)を使用して生成できます
- iOS 10.3 以降、Apple は動的なアイコンの置き換え機能を追加しました。実際、私たちは双 11 のような祭りでこれを体験できます。アプリアイコンが自動的に切り替わり、アプリを再インストールする必要はありません
- 手順:info.plist を設定 => 画像を配置 => setAlternateIconName メソッドを呼び出す
- 後で info.plist ファイルについて言及します
- アプリのバッジ(例えば、WeChat アプリに表示される未読メッセージ数)については、applicationIconBadgeNumber 属性を設定すれば大丈夫です
起動画面関連#
アプリが起動時に表示する画面は、実際には「起動画面 + スプラッシュスクリーン」で構成されています。なぜ 2 つの画面が必要なのでしょうか?
1)まず起動画面について、Launch Screen とも呼ばれます:
新しいプロジェクトを作成すると、デフォルトで LaunchScreen.storyboard ファイルが生成されます。ストーリーボードという名前の通り、実際には画板のようなもので、UIKit コンポーネントを追加して自分の起動画面を作成できます(UIKit コンポーネントの説明については、このシリーズを引き続きご覧ください~)
同様に赤い矢印に注目、実際には 3 枚の画像(アイコン + アート文字 + アート文字)を使用してこのような起動画面を構成しました。
しかし、この起動画面には 1 つの特徴があります。それは表示が非常に速いため、制御が難しいことです。そのため、起動画面が消えたときにアプリの内容がまだ読み込まれていないという状況が発生する可能性があります。これにより、ユーザーに空の画面が表示されることになります。
2)したがって、スプラッシュスクリーンが存在します:
スプラッシュスクリーンは、アプリを起動した後にユーザーに空の画面を表示しないことを目的として追加されました。
これは人為的に追加されたもので、現在のアプリの実際の使用から感じられるように、このスプラッシュスクリーンは広告の表示やブランドのプロモーションの手段として拡張されています!
そのため、時には逆効果となり、アプリの初期化時にもう 1 つの画面を読み込む必要があることがあります。例えば、淘宝アプリでは、最近広告が取り消され、以前は淘宝の起動が遅かったのは自分の携帯電話の問題ではなかったことに気づきました。
《Apple 人間工学ガイド》には次のように書かれています:
https://developer.apple.com/design/human-interface-guidelines/ios/overview/themes/
できるだけ、スプラッシュスクリーンやその他のスタートアップ体験を表示することを避けてください。
できるだけスプラッシュスクリーンやその他の余分なスタートアップ体験を表示することを避けてください。
しかし、各企業の文化は大きく異なり、Microsoft はこの点でアプリがスプラッシュスクリーンを通じてブランド効果を拡大することを奨励していると聞いています~
Info.plist の一般的な属性#
最後の部分は、実際にはプロジェクト内で非常に重要なファイルであり、自動的に生成されます。主にアプリの基本設定を提供します。
赤い矢印に注目。このファイルは本質的に XML ファイルであり、以下にいくつかの一般的な属性を紹介します。
1)Bundle identifier
- アプリの一意な識別子で、主にアプリを公開する際に証明書を申請するために必要です
- 形式は com.<company>.<appName > のようなもので、以下に一般的なアプリの Bundle identifier を示します:
- com.tencent.xin
- com.tencent.mqq
- com.ss.iphone.article.News
- 形式には唯一の標準がないことがわかります。例えば、最後の頭条アプリの形式
- 参考
2)Bundle name
- アプリのインストールパッケージ名で、新しいプロジェクト作成時に設定された Product Name がデフォルトです
3)プライバシー関連
- アクセス権に関連する属性(例えば、アルバムやカメラへのアクセスなど)
- ⚠️:その Value 値は具体的な用途を明確に記述する必要があり、「使用… 権限」と単純に書くのではなく、そうしないと公開時に審査で拒否される可能性があります
PS:上記の属性をコードで取得したい場合は、以下のコードを使用して辞書を取得し、Key に基づいて対応する Value を取得できます。
NSDictionary *dic = [[NSBundle mainBundle] infoDictionary];
- OC 言語でのメソッド呼び出しの方法は独特です
- 角括弧 [] はメソッド呼び出しを示します
- [NSBundle mainBundle] は NSBundle クラスのクラスメソッドを呼び出し、インスタンスオブジェクトを返します
- 次に、インスタンスオブジェクトを通じて infoDictionary メソッドを呼び出し、辞書オブジェクトを返します
- 具体的な構文はObjective-C 関数—— 易百教程を参照してください
来週お会いしましょう👋#
次回は以下について話します:
- iOS のシステムアーキテクチャ
- UIKit ライブラリの重要なメンバー
- UIView、UIViewController およびそれぞれの継承関係
- 各コンポーネントの基本的な使用法と特徴
❗️今、あなたは自分の最初のアプリを作成することができます!アプリアイコンを追加し、起動画面を設定し、関連する info.plist 属性を変更してみてください~