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 属性~

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