iOS技术博客1 - 跳跃的兔子
用了很多的iOS应用,我们被这些界面优美、功能强大、有着极佳用户体验的app所吸引,却少有人想过写出这些优秀app所需的努力。从刚开始尝试iOS开发,到现在逐渐开始下定决心在这个领域有所建树,我被iOS开发的模式所深深地吸引了。它和我之前接触过的所有语言都不一样,苹果是最重视用户体验的公司,因此在它的平台上开发app和其他平台上有些很不一样的地方。当我们想要用C或C++或是java写出一个东西的时候,我们的习惯是先实现他的功能,将这些功能在一个很粗糙的界面甚至是doc界面中显现;而iOS则是先设计出一个相对美观的界面,在界面上添加组件,让它看起来就像一个可以使用的app一样,再一一连接这些组件,为他们添加功能。先明确你的目的,然后再想办法去实现,我被这种思维方式深深吸引。我想,这应该就是所谓的产品。
OK,废话就说到这里,今天的这篇博客,我将为大家展示怎样从一个不知所措的初学者到在自己的iPhone里装上第一个自己的app。
一、仔细思考你是否已经准备好了学习iOS开发
如果你真正想要做好一件事,决心,是必不可少的。一台Mac!这是必须的。有了Mac后,你需要第一时间更新到最新的OS系统,并熟悉使用它,你会深深地沉迷于它的诸多优点。同时,下载最新版本的Xcode;同时你要让你的Apple ID加入苹果开发者。如果你想让你的app至少能够在你的设备上运行,开发者账号是必不可少的,为此,你需要付出每年99刀。对于初学的穷屌丝来说,这还是很艰难的。在此,特别鸣谢强哥,我现在正借用他的开发者账号。
二、学习使用Xcode
Xcode是苹果的开发平台,现在Xcode支持两种语言:object-c和swift。这正是苹果了不起的地方,有些人觉得苹果不过是一个卖硬件的公司,但是其实真正让苹果拿到不可替代的地位的是它出色的软件支持。在这里我介绍一些作为一个真真正正的初学者在刚开始使用Xcode的一些经验总结。
Xcode创建项目需要输入公司名称,即便你没有公司,也要输入一个。建议大家起一个自己不会后悔的名字,并且从此养成一个严谨的性格,认真对待你的每一个行为。iOS开发不需要屌丝程序员,需要的是高大上的工程师。在建项目的时候需要选择语言,你可以选择OC或是swift,oc和c++支持混合编程,swift和oc也支持在一个项目中,但需要在不用的文件内。
右上角的三个相连的按钮分别用来显示/隐藏左侧显示栏、下部显示栏和右侧显示栏。和它相邻的三个连续按钮,第一个用来显示当前选项卡,第二个用来显示助手编辑器,第三个貌似是用来比较的,但是至今没有用过,也还不会用。
当你不想或不能在自己的移动设备上运行程序的时候,你就要用Xcode带来的方便的模拟器,但是再使用,再进行模拟运行的时候,你可以选择在何种设备上运行。但是我在学习的时候曾遭遇一个问题,就是模拟器不可用,在模拟器上运行程序的时候,你必须选择一个运行的设备,但是我的模拟器无法选择设备,也就无法运行程序。这个问题的解决办法是:点击Xcode-Open Developer Tool-iOS Simulator打开iOS模拟器;选择Hardware-Device-Manage Devices...点击界面右下角的‘+’,添加移动设备,问题解决。(再次鸣谢强哥)
以上为我在使用Xcode时所遇到的问题,作为一个初学者,成长是一个漫长而痛苦的过程,在这里写下来,为遇到同样问题的初学者提供一点方便。
三、首个具备功能的app-跳跃的兔子
这个app中 我们将学习使用三个知识点:创建并管理图像动画、滑块和步进控件。
所见即所得的storyboard。前面已经介绍过了,iOS开发注重用户体验,这个用户体验甚至包括了开发人员的体验。在创建iOS程序时,通常是先规划界面,再添加功能。再这个程序中,我们将使用20帧的png图像来实现动画。请注意,Xcode县已不支持jpeg格式的图像,如果导入,则不能识别。我们将事先准备好的图片文件夹直接拖到Images.xcassets,这样就可以在代码和 IB编辑器中轻松使用这些图片了。iOS创建页面只需将所需的组件从Object Library中拖曳到View Controller中即可。在使用View Controller前,你需要把File Inspector中的复选框“Use Size Classes”选择不选。否则你的View Controller将不是屏幕尺寸,影响初学者调整布局。在添加组件后,在Size Inspector中为组件添加约束,只要调整好位置点击添加约束就可以,虽然简单,但是如果你不这么做,如果你改变某一组件的大小,就有可能引起其他组件从屏幕上消失。
创建并连接到输出口和操作。首先,添加输出口。添加输出口只需点击制定组件,按住control键,并从主图像视图拖曳到ViewController.m中编译指令@interface的下方,选择连接类型Outlet。添加操作和添加输出口的方法类似,在选择连接类型的时候,选择Action。添加输出口和操作虽然简单,但是至关重要,用鼠标进行拖曳,如果不够严谨,很容易出错。如果错误的连接了,你的程序会无法运行,对于初学者又往往难以找到错误所在。其实,如果注意观察,你会发现每一行定义输出口和操作的代码前都有一个实心圆,表示已连接到组件。将鼠标指针滑倒圆点,就会显示出该输出口/方法所连的具体是哪一个组件。在审查时,点击弹框中的详细信息,将会为你跳转到在View Controller中的相应组件,右键该组件,你就可以在组件中看到它所连接的方法和输出口、并可以直接对其进行修改操作。注意,如果在连接输出口时需要更改,务必对输出口/操作和连接的组件同时进行更改,否则将无法运行。例如,当你为一个输出口改了名称后,需要重新为该输出口连接组件,同时需要在组件中删除原来的连接。
实现应用程序。
1. 让图像视图显示动画。要使用图像制作动画,需要创建一个图图像对象(UIImage)数组,并将它门们传递给图像视图对象。这些方法都将在视图控制器(ViewController)中的ViewDidLoad方法中实现。为给图像视图配置动画,首先声明一个名为hopAnimation的数组(NSArray),接下来初始化这个数组,这个数组所储存的是用于实现动画的图片,点击图片文件夹你就可以看到,这些图中小兔子的位置和形态是不一样的,这些图片连起来就形成了小兔子在跳跃的动画。这里使用以‘@[’打头的初始化语法。采用这种初始化方式时,只需要提供一个逗号分割对象列表,并以‘]’ 结尾。然后将图像视图imageView的animationImages属性设置为该数组。在这里还需要设置图像视图的另一个属性:animationDuration,它表示动画播放每一次将持续多少秒。如果不设置,播放速度为30帧每秒。我们希望在1秒内播放完所有的帧,因此设置animationDuration=1。
2. 开始/停止播放动画。startAnimating/stopAnimating。调用属性时需要加‘.’,而调用方法时不要加‘.’。如:bunnyView1.animationImages;bunnyView1 startAnimating。
3. 设置动画播放速度:同样使用animationDuration的方法,将滑块的值传入:使用speedSlider.value即可获取滑块的值。
4. 步进控件的方法。首先令滑块的值等于步进控件的值,再调用设置速度的方法
- (IBAction) setIncrement : (id) sender { self.speedSlider.value=self.speedStepper.value; [self setSpeed:nil]; }
调用setSpeed时,传递了参数nil/默认情况下,操作方法接受一个sender参数,该参数将自动设置为出发操作的对象。这样,操作便可查看sender,并作出相应的响应。在setSpeed中我们没有使用sender,因此将其设置为nil。
5.
- (UIStatusBarStyle) preferredStatusBarStyle{ return UIStatusBarStyleLightContent; }//设置状态栏颜色为白色,以修复在深色背景下看不清的问题
运行。在Images.xcassets的文件夹下的AppIcon内添加图片作为自己程序的icon,注意icon是指定大小的图片,若大小不合适,依然能够添加,但是运行时会报错显示icon大小不正确。运行完毕后,你的手机里将有了你第一个自己写的iOS程序。