Bo2SS

Bo2SS

從《蝦票票》帶你入門iOS(2)——iOS簡史與工程創建

從《蝦票票》帶你入門 iOS

上週我們聊了第 1 部分,明確了要做一款《蝦票票》App~

今天我們來到第 2 部分,從 iOS 的發展歷史開始聊,然後使用 Xcode 創建一個 iOS 工程,再介紹工程裡常用的一些配置。

iOS 簡史#

iPhone 1 代誕生#

在 iPhone 出來之前,Apple 的兩款明星產品非 iMac 和 iPod 莫屬,而當時喬布斯就在想,那能不能把 iMac 縮小,或者把 iPod 擴大,從而做出一款手機呢?喬布斯把這個任務分給了兩個產品線,也就是 iMac 團隊和 iPod 團隊,可能你想不到,最後是誰成功了?

  • 基於 iMac 強大的 macOS 系統,第一款 iPhone 有非常強勁的性能;
  • 並且在大家想着怎麼做出各式各樣的手機鍵盤時,喬布斯則在想為什麼不把鍵盤作為一個軟件呢?這樣我想要什麼樣的鍵盤就能有什麼樣的鍵盤,並且還將擁有更大的螢幕和更輕的重量。

在 2007 年的 Apple 發布會上,喬布斯不停地重複三組詞:An iPod、A Phone、An Internet Comunicate、An iPod、A Phone...

iPhone 誕生

原來最後他把三個功能組合到了一台設備上,這就有了我們的iPhone 1 代了!

當時他還提到了筆記本概念提出者 Alan Kay 曾說的一句話:

People who're serious about software should make their own hardware.——1970

那些熱衷於軟件的人也應該製作他們自己的硬件。——1970

三十多年後的 2007 年,Apple 也做到了,後來微軟其實也做到了。同時,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,新建工程無非就是這幾步:

三步走

  1. Create a new Xcode project
  2. 選擇 iOS-App,點擊 Next
  3. 填寫工程相關信息
    1. Team 可以不填,基本是在真機調試或者 App 上架時才有用
    2. Organization Identifier 一般是類似 com.organization_name 的形式
    3. 本項目基於 OC 語言,Interface、Life Cycle 以及 Language 都是固定的了
    4. 兩個複選框暫時不用管,也不用勾選
    5. 點擊 Next

後面選擇好了路徑即完成新建。

接下來介紹工程中比較常用的三個配置:App 圖標、啟動頁面相關以及 Info.plist 常用屬性

App 圖標#

image

新建工程後默認存在一個文件,只需往其拖入圖標即可

image

  • 關注紅色箭頭
    • 創建工程後,會自動生成 Images.xcassets 文件,這個文件可以建立很多圖像集,用來存儲圖片
    • 拖動自己的圖片到 AppIcon 這個圖像集裡,也就設置好我們的 App 圖標了
    • 至於怎麼設計自己的 App 圖標,就看個人發揮了~
  • PS
    • 如果想要豐富的圖標素材,可以去iconfont—— 阿里圖標庫看看
    • 細心的你可能會發現圖片集裡有各種比例的圖標,它們可以通過Prepo應用(App Store 裡有)生成
    • 在 iOS 10.3 後,Apple 加入了動態替換特性,其實我們在雙十一這種節日就可以體會到,App 圖標自動切換了,而並不需要重新安裝 App
      • 步驟:設置 info.plist => 放圖片 => 調用 setAlternateIconName 方法
      • 待會我們會提到 info.plist 文件
    • 關於 App 的角標 Badge,比如微信 App 上顯示的未讀消息數,設置 applicationIconBadgeNumber 屬性即可

啟動頁面相關#

一個 App 啟動時展示的頁面實際上是由「啟動頁面 + 閃屏」組成,為什麼要有兩個頁面呢?

1)先說說啟動頁面,又叫 Launch Screen:

在新建工程時也默認生成了一個 LaunchScreen.storyboard 文件,顧英思義,故事板,其實類似一個畫板,可以通過添加一些 UIKit 組件來做自己的啟動頁面(關於 UIKit 組件的講解,請繼續關注本系列哦~)

image

同樣關注紅色箭頭,實際上我用了三張圖片(圖標 + 藝術字 + 藝術字)組成了這樣一個啟動頁面。

但是這個啟動頁面有一個特點,它的展示很快,不方便控制,所以有可能發生一種情況:啟動頁面消失了,而 App 裡的內容還沒加載出來,從而給用戶展示一個空的頁面。

2)所以就有了閃屏,又叫 Splash Screen:

它被使用的初衷就是避免在啟動應用後展示一個空的頁面給用戶

它是被人為添加的,現在從 App 的實際使用中其實可以感受到,這個閃屏已經被延伸作為投放廣告、品牌推廣的利器了!

所以它的出現有時可能適得其反,讓 App 在初始化時還需要多加載一個頁面,比如淘寶 App,最近取消了廣告,我才發現原來之前啟動淘寶慢不是自己手機的問題。

《Apple 人機交互手冊》裡寫了這樣一句話:

https://developer.apple.com/design/human-interface-guidelines/ios/overview/themes/

As much as possible, avoid displaying a splash screen or other startup experience.

盡可能避免展示閃屏或其它多餘的啟動體驗。

但每個公司的文化也大相徑庭,聽說微軟在這方面反而是鼓勵 App 通過閃屏擴大品牌效應~

Info.plist 常用屬性#

最後一部分其實是工程中至關重要的一個文件,它也是會自動生成的,主要提供 App 的一些基本配置。

image

關注紅色箭頭,該文件本質上是一個 XML 文件,下面介紹裡面的一些常用屬性。

1)Bundle identifier

2)Bundle name

  • App 的安裝包名,默認為新建項目時設置的 Product Name

3)Privacy 系列

  • 權限相關的屬性,比如訪問相冊、攝像頭等等
    • ⚠️:其 Value 值一定要寫清楚具體的用途,而不是單純的寫 “使用… 權限”,否則在上架時將面臨審核被拒的問題

PS:如果想在代碼中獲取上面這些屬性,可以通過下面的代碼獲取其字典,根據 Key 即可取到相應的 Value。

NSDictionary *dic = [[NSBundle mainBundle] infoDictionary];

下週再見👋#

我們會聊一聊:

  • iOS 的系統架構
  • UIKit 庫裡的重要成員
    • UIView、UIViewController 以及它們各自的繼承關係
    • 各個組件的基本使用和特性

❗️現在你可以嘗試新建你的第一個 App 了!給它添加一個 App 圖標,設置它的啟動頁面,修改相關的 info.plist 屬性~

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。