apps从0到1 day1

创建一个应用很容易吧?
在我们继续学习iOS SDK之前,我们先停下来好好看看之前写的Hello World程序。了解多一点Swift基础语法和app内部的运行原理是有好处的。
到目前为止,如果你一步一步地跟着我去写了Hello World程序的话,你应该会有几个问题:

  • storyboard里的View Controller是怎样和ViewController.swift里的ViewController class连接起来的?
  • showMessage()函数里的代码是什么意思?它怎样告诉iOS去显示一条Hello World信息?
  • 关键字@IBAction是什么意思?
  • Hello World button是怎样知道用户点击了然后调用showMessage方法呢?
  • 点击了Xcode上的Run button之后会发生什么呢?编译一个程序是什么意思?

对于开发者来说,了解代码背后的细节,理解基本的iOS编程概念是很重要的,如果之前没有过其他语言编程经验的话,理解这些概念会有一点的困难。不过不用担心,一切才刚刚开始。只要一直学习下去,多写代码,多总结,相信编程能力会有很大的提升的。
让我们先来看一个现实世界的例子吧。

apps从0到1 day1_第1张图片
屏幕快照 2015-06-29 下午4.35.10.png

想像你手里拿着电视遥控器。通过它你可以轻松地进行音量调节,换台。那现在我来问问你,你知道当你按下增大音量或者换台的按钮之后发生了什么事情吗?有知道的同学麻烦跟我说一声,因为我不知道。。。我想,遥控器一定是给电视发送了一条信息,告诉它我要开大点声了,或者是我要换台了,至于电视是怎么做到的,这背后的原理用户就不用知道了。在这个例子里面,调节音量的按钮叫个接口(interface),背后原理叫做实现(implementation)。接口与实现之间通过消息(message)通信。
在iOS编程世界里面也是如此。在storyboard里面的用户界面叫做interface,我们写的代码是implementation。实际上这就是面向对象语言里面的封装(encapsulation),关于面向对象方面的知识,在这里我不会多讲,但是swift语言本身就是一个面向对象语言,所以在开发过程中这种思想会不断渗透到代码里面的。

让我们来解决上面提出的问题吧。

  1. 点击Button之后
    还记得我们是怎样将Button和代码连接起来的吗?打开Main.storyboard,选择“Hello World” Button再看一下:


    apps从0到1 day1_第2张图片
    屏幕快照 2015-06-29 下午5.57.41.png

    看到右边工具栏里面的Sent Events吗?你的showMessage方法已经和"Touch Up Inside"事件连接上了。
    我盗用老外的图来解释一下:

apps从0到1 day1_第3张图片
屏幕快照 2015-06-29 下午6.01.26.png

相信英文好一点的都能看得懂这个流程吧。
在iOS里,apps是事件驱动编程的。在任何时候,控件对象和系统对象都在监听着特定的事件,一旦事件发生,就调用对应的方法。

  1. showMessage() 方法
    让我再盗用一下老外的图:
apps从0到1 day1_第4张图片
屏幕快照 2015-06-29 下午7.04.46.png

我太懒了。还是一图胜千言啊。
其他几个问题我就不解释了,都挺简单的。
下面是今天的重头戏。

  • 自动布局 Auto Layout
    在iOS的远古时代,开发者们都是用代码来写用户界面的。他们用代码来控制控件的位置,颜色,大小,真是一批好厉害的程序员。但是那个时候iPhone屏幕还没那么多尺寸,最多就为界面写两套代码,一套iPhone的一套iPad的。但是现在看看,iPhone有4, 5, 6,iPad也有几种尺寸,还有横屏竖屏的,如果都要单独为这些尺寸写一套代码,那岂不是得累死了?
    所幸Xcode有Auto Layout。
    其实Auto Layout我也一直用不好,也希望借此机会重新巩固一下。
    还是以Hello World程序为例。
apps从0到1 day1_第5张图片
屏幕快照 2015-06-29 下午7.50.01.png

这是它在三种不同屏幕下的运行结果。看看不使用Auto Layout时Button的位置。我们肯定希望它一直都在屏幕中间吧?
但是为什么它不在呢?为什么?
还是用图来解释:

apps从0到1 day1_第6张图片
屏幕快照 2015-06-29 下午8.21.28.png

怎么样,明白了吧。没有Auto Layout的话,我们就相当于将Button的位置硬编码了。
那下面我们使用Auto Layout来试试,将Button设置到每种屏幕的正中间。
考虑一下,我们会怎样描述这个Button的位置呢?
我们大概会说,这个Button应该要位于垂直方向和水平方向的中心,不管屏幕的尺寸和朝向。于是就有了两个约束:

  • center horizontally
  • center vertically
    Xcode提供了两种使用Auto Layout的方式:
  • Auto Layout Menu 在storyboard的右下面有三个按钮,它们就是。
  • Control-drag
    还是有点懒,操作的过程就不写了,直接上完成图:
apps从0到1 day1_第7张图片
屏幕快照 2015-06-29 下午8.53.27.png

这时候它在所有尺寸的iPhone上都在正中间了。
我们再来加一个Label吧。像这样:

apps从0到1 day1_第8张图片
屏幕快照 2015-06-29 下午9.14.12.png

如果现在你在iPhone4上运行这个程序,你有可能会看不到这个Label,哈哈,毕竟它太短了:-)
为了能在所有iPhone的设备上都能看到它,我们需要对它加上一点约束。我们大概会这样描述这些约束:

  • 它永远在屏幕的最下方。
  • 它要在水平方向上的中心。
    做完之后是这样子的:
apps从0到1 day1_第9张图片
屏幕快照 2015-06-29 下午9.23.15.png

记住,只有所有校准线都是蓝色的时候,才是正确的约束,有橙色线说明约束不够,有红色线说明你的约束之间有矛盾。
Auto Layout的内容博大精深啊,我在这里只能介绍一点点,最好的学习方法就是把它应用到你自己的项目里面。
Day 1就到此结束了。

=================分割线==================

其实我断断续续地学习iOS开发已经有一年了。可是直到今天都还是一个渣渣的水平,连一个拿得出手的应用都没有,真的觉得自己是个窝囊废。最大的原因还是自己坚持不下来吧,老是三天打鱼,两天晒网。如今大学毕业了,要出去找工作了,之前没有在公司有过实习经历,又没有什么项目经验,真是倍感压力。
真的好想放弃,想回去老家,轻轻松松地过日子算了。在深圳熬得这么辛苦图什么。
正如老韩所说:小孩子才说喜欢,成年人只谈利弊。
可是。我还是想为了一个目标做最后一博,all in。假如在三十岁之后还是完成不了,那我就认命了,我这一辈子就那样了。
今夕何夕
青草离离
明月夜送君千里
等来年 秋风起

你可能感兴趣的:(apps从0到1 day1)