让不懂编程的人爱上iPhone开发2020 Swift版-03

作者: eseedo 分类: iOS入门 发布时间: 2020-01-29 22:08

给自己一个前进的理由-“Hello World”

我们唠唠叨叨了这么长时间,却没有实现任何一个实际的目标,这样可不行。

接下来我们将要实现iOS开发的第一步,也就是在屏幕上输出经典的”Hello World”欢迎语句。

好了,终于到了真正写代码的时候了!想来你已经有了macOS Catalina操作系统,并且已经下载安装了最新版本的Xcode(目前是11.3)。如果你用的是之前的版本,请尽量升级到最新版本。

在iOS13和之前的版本间存在着某些巨大的差异,可能有些公司还在用老的Xcode和iOS版本,但作为新手来说,就没必要了,一切从新开始。

此外,Swift是一门全新的语言,它自身的进化非常快速且巨大,因此如果你的Xcode版本比较陈旧,那就不敢保证这教程里面的代码都能顺顺溜溜的跑下去~同样的 ,为了保险起见,对于新手而言,哥不建议你使用beta版的开发工具,只采用从Mac App Store里面下载的正式版本。

还等什么呢,别害怕,只要你还能看能写,下面的事情就能搞定:

Step1: 打开Xcode

考虑到你可能第一次接触iOS开发,连Xcode都不知道怎么打开。那么多废话两句。你可以打开Finder(Mac系统的’我的电脑’),然后进入Applications这个目录,然后找到Xcode,就可以打开了。

如果你是Mac老用户,最简单的方法就是点Mac最右上角的Spotlight(有点象放大镜的一个小图标),然后输入Xcode,回车,就可以了。

当然,如果你直接把Xcode的图标放在下方的Dock里面是最好。方法很简单,右键单击Dock上Xcode的图标,然后选择Options-Keep in Dock,这样Xcode以后就直接显示在Dock中了。

打开Xcode后,首先看到的是欢迎界面,喜迎你的到来。

Step2 创建新项目

这时候点击左侧的Create a new Xcode project,会打开一个辅助界面,帮你选择所需要的模板。

因为我们这个系列的教程是iPhone开发,所以要保持在默认的iOS(如果不是,请手动切换,然后选择Single View App。

如果你对新鲜事物充满好奇心,可能会点击左边的不同图标和文字,你会看到不同的模板。

所谓的模板是Xcode为了帮开发者节省时间而预先配置好的一些项目。每个从模板中创建的新项目都默认包含了开发应用所需要的很多资源文件。模板的好处就是让你省了很多敲代码的工作。

如果你用的不是Xcode11.3,或许这里所显示的模板会有所差异,但至少就“绝地打靶”这个游戏来说,所需要的模板在这里是有的。

那么问题来了,为毛我们这里要选择Single View App。其实很简单,我们现在只需要一个最基本的模板,也就是所谓的单界面应用模板,至于其它复杂的东西一律都用不到。对于其它各种类型的模板,随着学习和实际开发工作的进行,你会逐渐接触到的,这里就不浪费时间了。

Step3: 输入项目信息

点击Next,你会看到一个新的提示界面,里面需要输入和选择一些信息,你可以照着下面的来:

注意在Language这里要选择Swift!!!这是因为我们当前系列的教程将采用Swift编程语言。

1.Product Name:
这里填BullsEye,当然你也可以取个其它的名字,不过尽量避免在项目名称中使用空格或者特殊符号。

2.Team:

如果你已经加入了苹果开发者计划,那么这里就会显示你的团队名称。这里我们先暂时不进行相关设置,在随后的教程中会对此进行处理。

3.Organization Name:

你的梦想团队名称,或者你自己的名字。这里我填的是happybubsy,你可以随便填上其它的。

4.Organization Identifier:
这里是com.happybubsy,这个标识符是我用来识别自己的APP,通常是反转域名,只要符合com.xxxx.xxxx这种命名习惯就行。。

不要过分担心这里填的信息对不对,因为这些都是可以修改的。

5.Language:

这里填Swift,不过如果你想尝试Objective-C,也可以自己去体验。

6.User Interface:

这是iOS13之后添加的新选项,可以选择SwiftUI或storyboard。对于我们的第一个项目,这里需要选择SwiftUI!!!

7.Use Core Data:

这里不需要勾选,Core Data是iOS的一个类库,目前还不需要涉及到。

8.Include Unit Tests:

不需要勾选,目前我们还不会涉及到单元测试

9.Include UI Tests:

不需要勾选,目前我们暂时还不涉及到。

Step4: 选择项目保存地点

信息完成后点击Next,此时Xcode会要求你提供保存项目的位置。

选择一个位置保存项目文件,具体在哪里取决于你的个人喜好。

选择完后,Xcode会使用Product Name为项目自动创建一个新的文件夹。

在底部有一个提示框询问你’Create Git repository on My Mac’。现在你先不用管它,它是用来进行Git版本控制的。 关于Git版本控制系统,我们在后面会慢慢接触,它可以帮助开发者更好的管理项目源代码。

Step5: 一切准备就绪,点击Create完成创建。

点击Create,Xcode会基于Single View Application这个模板创建一个名为BullsEye的新项目。完成后的屏幕显示如下:

如果你的Xcode版本不同,可能这里看到的一些小细节会有所差异。不过Don’t panic! 不要恐慌,面对困难,不要怕,微笑着面对它,奥利给~

这些小小的差异并不影响到我们的学习。

在继续之前,注意检查Xcode窗口中左侧列表中是否有一个名为ContentView.swift的文件,那就说明项目一切就绪了。

如果你没有看到ContentView.swift文件,而是ViewController.swift,那就说明在创建项目的时候没有在User Interface那里勾选SwiftUI。

更有甚至,如果你看到这里出现了ViewController.h和ViewController.m,那就说明在选择Language的时候选择了Objective-C。

在以上提到的几类情况下,你需要做的就是重新创建项目,并确保几个选项符合我们的预设。

第一眼的代码编辑器

既然要学编程,那么第一眼要看的就是代码编辑器,它占据了Xcode左侧的大部分空间。

在学习的过程中,我们将在代码编辑器中消耗大量的时间和精力。而正如它的名字所描述的,代码编辑器主要是用来编写代码的。

默认情况下它显示的是ContentView.swift文件中的代码。该文件决定了在这个应用唯一的“界面”或“页面”上将要显示的东西,在iOS开发的术语中就是view(视图)。

此时我们只需要关注ContentView.swift中的以下代码:

import SwiftUI
struct ContentView : View {
 var body: some View {
 Text("Hello World")
 }
} 

看到这里的代码,可能你没有任何的感觉。不用担心,在后面的学习中我们会一点点了解其中的细节。不过这里要简单说一下这堆代码的作用:

第一行代码 import SwiftUI说明我们将在应用中用到SwiftUI这个工具包。SwiftUI是iOS13中引入的全新工具包,它的主要作用是让开发者可以更方便快捷的创建用户界面,并对用户的行为进行响应。

代码的其它部分定义了应用的视图中要显示的内容。(注意,每当我们提到视图的时候,你只要知道指的就是界面或页面就好)。这几行代码的意思是定义了一个ContentView,它本身属于View(视图)。同时,它还指出ContentView包含了一个单一的Text对象,其中显示的内容是“Hello World”。

注意到在这些彩色代码的上面还有灰色的代码。这些灰色的代码其实是传说中的comments(注释)。在Swift语言中,只要看到某一行代码的前面有双斜杠,就表示接下来的内容都是注释。注释的目的是为了向自己或者团队的其他小伙伴说明代码的作用和含义。当然,我们还可以在注释中做任何事情。据说在上世纪60年代的登月代码(已开源)中,还有工程师写下的情诗,故事,以及各种文字版的吐槽和鬼畜~)

对此感兴趣的童鞋不妨自行去探索一下这个神奇的代码世界。https://github.com/chrislgarry/Apollo-11​github.com

第一眼的Canvas(画布)

且慢,SwiftUI在推出时不是号称是可视化编程吗?对于不懂代码的童鞋,完全看不明白代表着什么。所以,是时候来了解下Canvas的作用了。它位于Xcode的右侧,样子是这样的:

Canvas面板这里显示了一条消息,Automatic preview updating paused。这是什么意思呢?很简单,它告诉我们现在Canvas(画布)并没有按照代码编辑器中的代码来显示视觉内容。为了让我们实时看到代码的视觉效果,需要完成下面的操作。

Step6. 点击Canvas面板上的Resume按钮,以便查看应用的视觉效果。

使用canvas画布,可以非常轻松的实现应用界面的可视化,特别是当我们的界面变得越来越复杂的时候。

在后面的学习中,我们甚至可以直接在canvas画布中编辑用户界面,而无需手动编写代码~

Step7.尝试运行项目

接下来我们将在传说的模拟器中运行项目了。所谓的模拟器就是对真实设备的模拟,包括:iPhone,iPad,Apple Watch和Apple TV等。我们可以通过模拟器快速测试应用,特别是在开发的早期阶段。当然,在后面的学习中,我们也会尝试直接在真实的设备中进行测试。

在设备选择列表中选择iPhone 11,然后点击最左上角的Run按钮(红绿灯右边的三角),Xcode会开始努力的工作,然后在iOS Simulator模拟器上运行这个全新的应用。当然,首次启动的时候会看到下面的画面。

注意:如果这是你首次使用Xcode,那么会提示你enable developer mode。只需要点击Enable,然后输入密码让Xcode做相应改变就好了~

当然,实在没什么看头,不过是一个灰白的界面而已,而且你也没法和它交互,但不管怎样,这是我们一个真正的里程碑。恭喜你~

如果Xcode提示Build Failed或者Xcode cannot run using the selected device,那么要检查下左上角是否选中了某个具体的iOS模拟器,而不是iOS Device。

Step8 停止运行项目

在Run按钮的旁边是Stop,当你看烦了的时候就可以点它停止应用。

你可能会尝试使用在模拟器的界面选择菜单栏的Hardware-Home来退出应用,但这样做其实不能真正的退出应用。它只是从Simulator的屏幕上消失了,但应用仍然悬停在Simulator的内存中,就像在真机上一样。

在你按下stop之前,Xcode中会显示”Running BullsEye on iPhone 11“。

当然,你也可以不停止运行应用,直接返回Xcode来修改源代码。但直到你再次按下Run按钮前这些修改都不会实际生效。

问:当我们按下Run按钮时发生了什么?

首先,Xcode会将项目的源代码从Swift语言编译(通俗点可以叫翻译)成iPhone(或模拟器)可以理解的机器语言。虽然说开发iPhone应用的编程语言是Swift或是Objective-C,但iPhone自己可理解不了这种高级语言。因此需要一个翻译的过程。

编译器是Xcode的一部分,它可以帮助你将Swift的源代码转换成可执行的二进制代码。同时它还会整理收集所有组成应用的其它资源-资源文件,图片,storyboard文件等等,并把这些东西打包到一个叫“应用程序束(application bundle)”的东西里面。

以上的整个过程又称之为building(编译)项目。如果在这个过程中有任何错误(比如拼写错误),build会失败。如果一切正常,application bundle(应用程序束)会被拷贝到模拟器或设备中,同时会运行该应用。所有的这一切都是由强大的Run按钮来搞定的。

如果你看不懂上面这段话,也不要着急,对于目前来说这并不重要。甚至对很多编程老手来说这些东西也不是那么的重要。

在继续我们的iOS开发探索之旅之前,先多废话几句iOS的进化史。

从iOS1到现在的iOS13,iOS系统版本经过了多次更新。和android不同,通常新的iOS系统版本覆盖率要占绝大多数。

iPhone OS 1.0(2007年,这个年代还没有iOS哦,iOS是后来改的名字)

iPhone OS 2.0(2008年)

iPhone OS 3.0(2009年)

iOS4.0(2010年,首次将iPhone OS更名为iOS)

iOS4伴随iPhone4一起出现,打造了历史上最受人欢迎的一代苹果手机,同时也是乔帮主亲自发布的最后一款手机。

iOS5(2011年)

iOS5的发布伴随着iPhone4S,而就在这一年乔帮主去世了,在iPhone4S发布的第二天早上。。。

iOS6(2012年)

此时帮主已经往生西方极乐世界,厨子Cook接过了苹果的海盗旗,然后从良成了海军。就在这一年,iOS之父Scott Forstall被Cook驱逐出了苹果。

从Cook时代开始,苹果对中国市场的重视与日俱增。

iOS7(2013)

2013年WWDC大会上,Cook宣布iOS7的问世,由乔帮主在苹果的灵魂伴侣Jony爵士一手打造。iOS7的设计风格变化堪称革命,彻底抛弃了乔帮主和Scott钟爱的拟物化设计风格,转为微软力导的扁平化设计,让很多开发者一时难以接受。

iOS8(2014)

这是一次完全属于Cook的发布会。三年的转型,外界评价纷纭,不管怎样,苹果已经彻底Cook化了。

iOS9(2015)

从2014年10月30日Tim Cook出柜以来,苹果的产品定位发生了彻底的变更,那就是开始跟时尚结合。Apple Watch是表现最明显的一款产品,而对于iOS的各种设备来说,用Rosegold玫瑰金来吸引中国的万千女性也只有懂时尚的人才想得到吧~

iOS10(2016)

对于iOS10来说,最大的亮点莫过于开放了SiriKit,以及对电话功能、地图功能和iMessage功能更强大的支持。

iOS11(2017)

不用多说,iOS11最大的特色就是增加了ARKit和Core ML,从而直接支持增强现实和人工智能的相关特性。对很多消费者来说,目前可能还没有感觉到ARKit和Core ML的强大威力,但个人觉得iOS11所支持的这两大特性其实也是未来十到二十年信息产业的根基。

iOS12(2018)

客观来说,相比iOS11的锐意创新,iOS12可以说主要是填坑,也就是把一些体验不太好的地方进行优化,但并没有增加什么值得一提的新东西。当然,ARKit2.0新增的多人互动功能和诸多其它功能算是一大亮点。

iOS13(2019)

在经历了缝缝补补的iOS12之后,iOS13又来了一些相对激进的更新,比如引入了SwiftUI,比如让iPadOS和iOS彻底分家。

再说下设备分辨率的问题吧

目前支持iOS 13的主流iOS设备的分辨率如下。首先来看看2019年秋季发布的几款新品的分辨率:

iPhone 11 Pro : 2436 x 1125

iPhone 11 Pro Max : 2688 x 1242

iPhone 11: 1792 x 828Apple iPhone 11 (A2223) 128GB 黑色京东¥5999.00去购买

11寸iPad Pro: 2388x 1668

12.9寸iPad Pro: 2732×2048Apple iPad Pro 12.9英寸平板电脑京东¥8299.00去购买

iPad Air: 2224 x 1668

iPad: 2160 x 1620

感兴趣的童鞋可以参考这里:https://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions

关于分辨率的问题,我们在后面的学习过程中还会详细讲解。

好了,稍事休息之后,让我们继续iOS开发的学习吧。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注