IOS细说IOS的基本开发方法

今天我们来讨论IOS的基本开发方法。如果想继续想下看,首先我想对各位读者提出一些要求,第一你不应该是零基础的读者,一定要有Object-C的基础,能够
熟悉OC的语法,熟练的使用OC语言,最好能有过UI方面的了解(Web前台或Android)我呢也会默认你已经具备了一些基本概念上的了解。
今天我们将通过一个简单示例的开发过程为主线向各位介绍如果开发一个简单的IOS应用,以期可以入门。
首先我们先看一看程序的运行效果:
效果一程序启动:

我们看到程序启动后展示一个页面,这个页面上的最上面有一个选项卡空间,中间罗列着六张脸谱,在最后面是一个带有加号的按钮控件,他的功能是将添加脸谱。
效果二添加图片:

每当我们单击一次加号按钮,界面上的脸谱就会增加一张,添加在按钮的前面,图片的最后一个位置。
效果三:图片排序

当我们单击选项卡我们选中哪一个按钮,下面的图片就会排成相应(选项卡上标注的数字)的列数,并且在变化的过程中会有动画展示(由于我们使用的是静态图片动画无法展示)。

下面我们来介绍一下IOS的程序架构,首先由于IOS的开发采用的是mvc的开发所以我们首先介绍mvc的程序开发方式:
MVC开发:
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示
分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来
用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

 MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:[1]
Model(模型)表示应用程序核心(比如数据库记录列表)。
View(视图)显示数据(数据库记录)。
Controller(控制器)处理输入(写入数据库记录)。
MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
  通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
  通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
  通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。

----------------------------------------------------------------------------------------------
好我们基本上介绍完了MVC我们就看MVC架构是如何在IOS开发中应用的:
视图
视图是用户看到并与之交互的界面。对于我们的IOS程序来讲其实他就是我们所看到的程序界面,每一个界面都是一个视图,都是采用.storyboard文件,
Xcode会为我们展示当程序运行后的界面,其实这个界面是Xcode渲染的,他其实是一个类似于.xml的文件(熟悉Android开发的读者都应该知道Android
的界面就是有一个XML文件来描述的),storyboard文件就是一个视图的里面的每一个节点都是一个控件,而节点的层级关系也就是控件的层级关系,而
节点的属性也就是控件的属性。
MVC好处是它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
模型
模型表示IOS数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。
控制器
控制器接受用户的输入并调用模型和视图去完成用户的需求。其实我们每个storyboard文件都应该对应一个class,这个类用于加载并渲染我们的storyboard
文件,并且我们每个控件的监听与控制都在这个类中定义
我们看下图代表IOS开发模型:

好下面我们继续探究IOS应用程序的开发。
首先我们首先应该知道一个基本的应用程序都应该具备哪些功能,首先他必须能够展示一定的内容,其实必须能够对用户的操作产生一定的反应,那这就是IOS
开发中的两个重要内容了:控件、事件。
控件:控件是对数据和方法的封装。控件可以有自己的属性和方法。属性是控件数据的简单访问者。方法则是控件的一些简单而可见的功能。使用现成的控件
来开发应用程序时,控件工作在两种模式下:设计时态和运行时态。在设计时态下,控件显示在开发环境下的一个窗体中。设计时态下控件的方法不能被调用,
控件不能与最终用户直接进行交互操作。在 运行状态下,控件工作在一个确实已经运行的应用程序中。控件必须正确地将自身表示出来,它需要对方法的调
用进行处理并实现与其他控件之间有效的协同工作。
事件:事件是可以被控件识别的操作,如按下确定按钮,选择某个单选按钮或者复选框。每一种控件有自己可以识别的事件,如窗体的加载、单击、双击等事
件,编辑框(文本框)的文本改变事件,等等。
触发事件的对象称为事件发送者;接收事件的对象称为事件接收者。

----------------------------------------------------------------------------------------------------------------------------------------

首先我们来看一下IOS的API中的类的关系图谱:

好,下面我们将正式开始介绍我们的程序了,我们内首先大概介绍一下我们程序的基本实现方法框架,然后我们在细说我们每一步的具体实现。
1.我们看到在程序界面的最上方我们有一个选项卡,选项卡上表明了2、3、4、5四个选项,他的作用就是我们在单击它时,他就会除非一个事件,我们选中它
的而且他的一个属性值(此属性值并不是我们所看到的2、3、4、5而是在后台还有一个Integer类型的序列从0开始,有几个选项就到几,选中哪一个,属性就
会变成他的编号)就会变成相应的值。我们在事件回调的那个方法内可以得到这个属性然后做出相应的处理。
2.我们之前讲过控件之间是有层级关系到,我们为了让下面的图片能够与选项卡区分开来我们就在第一个view里有添加了一个子view,这个子view是不显示的
只是用做图片和按钮的父控件。
3.图片,实际上我们使用了一个叫做UIImageView的控件,有他来最终显示图片,我们知道图片的个数以及位置都是不固定的,所以我们不能静态的添加这些控
件,而是通过代码动态的显示图片以及调整他们的内容。
4.我们使用到的最后一个控件实际上是UIButton控件,当我们点击他是,他会引发一个事件,在此事件的回调函数内部我们就会动态的从图片库中随机添加一个
图片,并调整他的位置,由于他要添加在按钮之前,所以我们同时要调整按钮的位置。
5.其实还有一个我们看不到的东西,那就是动画,在本应用中我们的每个动作都伴随着动画,我是使用了block机制来实现的。

下面我们就要细化上面这一个过程了,我们通过图示以及代码具体的一步一步完成我们的应用程序:
首先我们来思考一个问题,既然我们需要在初始化以及位置变幻以时对图片进行从新排列,那么就需要知道我们选中了那种排列方式,这正是选项卡的属性,所
以我们需要首先得到选项卡,由于选项卡是_view的子控件,所以我们可以通过代码获得不过我们有更加简单的方法,就是在类中添加一个选项卡控件,然后将
选项卡与我们的代码连接起来即可。
同样的我们在单击按钮时要回调方法,那我们回调哪一个方法呢?其实我们也可以将按钮与回调方法连接起来......

好下面我们要具体来完成每一步的编写:
(1)我们在第一次打开时要初始化六张图片,并且两列排列

我看以上代码我们发现,首先我们要在一个叫做viewDidLoad的方法内操作,实际上这个方法并不是我们调用的,他是系统进入这个页面时调用的。那他是什么时
候被调用的呢?他是在系统加载view完毕时被调用的,那是在什么时候加载完毕呢?就是解析并加载完我们之前的那个storyboard文件之后,接下来我们看到在
这个方法内我们调用了一个叫做loadView:的自定义方法,他的主要作用就是添加图片控件,以及按钮控件。我们看到在里面我们通过一个for循环初始化了六个
UIImage并且将他们分别添加到对应的UIImageView中去,最后我们将UIImageView添加到我们自定义的那个view中去,最后我们初始化并生成了一个UIButton控件
然后将其添加到view中去。然后调用setLoction:::方法来对每一个控件初始化位置...........

上面我们看到了初始化位置的方法。进入到函数内部我们发现我们要做的第一步就是获得所有的要进行位置设置的控件,看代码我们也的确如此。好,接下来我们
定义了一个s1和一个s2变量其实他们主要是两个位置因子,在下面我们可以看到他们的使用。然后就是一个index变量,他主要标记我们现在要设置第几个控件的
位置。好下面就是for循环了,在for循环中我们通过整除以及取模运算,我们可以获得该控件所处的行列,下面我们就可以直接对位置进行设置了。不过还有一个
小问题,那就是那个按钮也在这个序列中,但我们并不知道他的位置,大他在view中的位置一定是最后一个,所以我们使用tag属性过滤并特殊处理它。

下面就是我们进行单击选项卡后的回调函数了。我们首先看到的是在使用一个block实际上他主要是为了使用动画的,这个我们最后再讲,然后就看到他调用了一个
changeView:的函数,changeView:函数又调用setLoction::函数对位置进行从新排列。

下面就是我们单击按钮时的回调函数,我们看到他先随机产生了一个0-9的伪随机数,然后生成一个UIImage最后生成UIImageView添加到view中,最后再进行排序他的过程也是带动画的。

最后我们在来看关于IOS的动画的使用,其实我们在变换位置,以及进行控件的缩放时,都是控件会从一个状态变化到另一个状态。而这个时候我们为了让整个变
化过程能够较为平顺,给用户的感觉良好我们一般会选择使用动画。我们可以看到我们只需将变换代码写到
[UIView beginAnimations:nil context:nil];
[UIView setAnimationsDuration:1.5];
...............
[UIView commitAnimations];
中去就可以完成动画变换。事实上,所有的动画都只是使用这三行代码,不需要参数或其他东西,所以为了我们代码的简洁性,我们可以将这三段代码抽取到一个
方法内,在方法内使用block来调用我们的变换代码即可,正如我们图中所示的那样。

今天呢只是个各位有志于学习IOS编程的读者起了一个头,后面还是要看各位自己的努力了.......................

好了,今天我们就讲到这里喽,各位拜拜啦!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值