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编程概念是很重要的,如果之前没有过其他语言编程经验的话,理解这些概念会有一点的困难。不过不用担心,一切才刚刚开始。只要一直学习下去,多写代码,多总结,相信编程能力会有很大的提升的。
让我们先来看一个现实世界的例子吧。

屏幕快照 2015-06-29 下午4.35.10.png

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

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

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


    屏幕快照 2015-06-29 下午5.57.41.png

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

屏幕快照 2015-06-29 下午6.01.26.png

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

  1. showMessage() 方法
    让我再盗用一下老外的图:
屏幕快照 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程序为例。
屏幕快照 2015-06-29 下午7.50.01.png

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

屏幕快照 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
    还是有点懒,操作的过程就不写了,直接上完成图:
屏幕快照 2015-06-29 下午8.53.27.png

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

屏幕快照 2015-06-29 下午9.14.12.png

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

  • 它永远在屏幕的最下方。
  • 它要在水平方向上的中心。
    做完之后是这样子的:
屏幕快照 2015-06-29 下午9.23.15.png

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容