从C#到Objective-C,按部就班学习苹果开发(5)--利用XCode来进行IOS的程序开发

本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,但愿带给你们更好,更真实的转换历程体验。前面几篇随笔主要介绍C#和Objective-C之间的差别,本片开始介绍利用XCode来进行IOS的程序开发,对比和C#利用VS进行开发的差别,以便咱们更快的融入到IOS开发的阵营。设计模式

在介绍利用XCode来开发项目前,我本身消化了几本IOS开发的书籍,以及苹果开发网站的一些自认为重要文章介绍,学习了一些视频的内容,包括网易里面的斯坦福大学的一些视频,并本身模拟了一些简单的项目代码开发,虽然不能说是已经掌握了相关的IOS开发(其实还差很远),可是也对一些基础的项目应用有了一个大概的了解,结合之前的Winfrom应用开发(很相似),也算有了一些小小的领悟吧。但介绍IOS开发,也是结合本身之前对C#开发的一些经验和理解来介绍,但愿不详细,不确切的地方,你们多多指正。浏览器

一、根据项目模板建立项目

其实对开发而言,不管是对于使用C#开发的VS开发工具,仍是基于Objective-C开发的XCode工具,都有基于模板生成对应的项目,这样咱们能够快速生成咱们须要的项目框架,这里为了介绍方便,创建一个单视图的应用程序,有点相似于咱们建立一个Winform的标准应用程序,里面默认也是带有一个Form窗体的,这个XCode的项目模板也是相似。框架

 

建立一个项目,咱们须要指定项目的名称、类前缀和一些相关的信息,这个和咱们建立C#项目指定命名空间以及一些相关参数也有点相似,但不等同,C#里面,对于多个项目应用,咱们能够经过命名空间进行区分,可是在IOS里面开发,咱们就只能经过类名进行限定了,所以,必要的类名前缀是须要的,这个的类前缀,主要是用来建立项目的视图控制器或者代理类的前缀标识。工具

建立的项目后的视图以下所示,能够看出红色方框就是前面一个地方的设置。布局

 

二、IOS项目和Winform项目开发的差异

建立的项目,默认有一个视图控制器和一个视图代理类,还有一个空白的界面,以下所示。这个和咱们在VS里面开发Winform项目很相似,也是须要拖动控件进行界面设计的。学习

IOS里面也提供了不少相关的控件,做为界面设计的须要,固然除了拖动方式,在Objective C里面也能够经过代码方式建立相关的控件对象,这个和C#建立控件同样,没什么差异。开发工具

可是,当咱们把控件拖动放到设计面板里面后,发现双击再也不是处理响应控件操做的代码了,而是修改控件的标题,这个开发观念和C#里面开发Winform应用不一样,这个是由于IOS的开发是严格遵循MVC的设计模式,它的界面设计独立的,界面视图的控制器又有独立的类进行处理,另外,它的一些处理,还能够放到一些代理类里面进行处理(如上图截图里面的应用程序委托类),这个其实有点相似于WPF的方式了,界面能够经过其余工具进行设计开发。网站

通常来讲,咱们在XCode中建立一个视图的时候,同时也会建立一个空白的XIB后缀名的视图界面,视图控制器就是管理模型数据(和模型逻辑调用),而后以必定的方式呈现视图内容,也就是说,控制器对模型和视图都有全权的控制处理;而视图若是要通知控制器,通常在IOS里面采用代理的方式或者Target-Action方式进行通讯,它的关系能够经过斯坦福教授那个IOS开发介绍的图形进行阐释,以下所示。atom

咱们若是是从事过C#的Winform开发的,或者WebForm的话,那么可能很不习惯,在IOS里面,界面设计和处理代码是分开的,它利用XML来描述界面(XIB文件),另外,对于界面的后台处理,经过视图控制器进行,而每一个视图里面,可能还会放置一些子视图,如WebView,TableView等这样的视图,若是须要这些具体的视图操做,那么还须要在视图控制器里面使用视图代理接口,如子视图的绘制和数据源的接口,选择视图某部分等操做,都是经过代理接口进行处理,而对于一些按钮的操做,则是经过Target-Action这样的模式进行响应。反观C#里面的Winform开发,可能不会划分那么复杂,多数是经过事件等方式对数据进行绑定或者按钮事件的响应,要了解IOS的开发模式,可能这里须要特别注意调整的地方。spa

随着认识的深刻,你会慢慢了解这个模式对于界面的设计,代码的维护分别的很清楚,维护很方便。

三、添加一些界面控件和处理

首先,咱们和在VS里面开发WInform项目同样,须要先绘制好界面,咱们先把界面设计好向以下图形所示,这个工做没有什么特别之处,就是把它拖动到面板上,调整位置和布局便可。

为了好看,我在XCode的项目里面导入了一个图片,而后指定了按钮的背景图片,以下所示。

运行界面,看到的效果和这个差很少,不过若是要在代码里面对界面元素(如文本输入、标签、按钮等)进行处理,目前还不能够,须要增长一个IBOutLet的对象到代码里面,通常能够经过拖动的方式添加。

拖动的方式,就是按着Control拖动界面元素到代码里面,会弹出一个输入界面,输入控件的名称便可,这个变量称之为插座(IBOutlet)变量,以下所示。

 

对于按钮的事件处理,也能够经过这个方式进行添加,以下所示,

 

最后视图实现类的代码以下所示

#import "MyHelloAppViewController.h"

@interface MyHelloAppViewController ()

@property (weak, nonatomic) IBOutlet UITextField *txtName;

@property (weak, nonatomic) IBOutlet UITextField *txtAge;

- (IBAction)getResult:(id)sender;

@end

而后咱们在后台代码里面,实现getResult的方法内容,把输入的内容在弹出视图里面进行展现,以下所示。

- (IBAction)getResult:(id)sender
{
    NSLog(@"姓名:%@  年龄:%@",self.txtName.text, self.txtAge.text);
    
    UIAlertView *message = [[UIAlertView alloc] initWithTitle:self.txtName.text
                                                      message:self.txtAge.text
                                                     delegate:self cancelButtonTitle:@"取消"
                                            otherButtonTitles:@"保存", nil];
    message.alertViewStyle = UIAlertViewStyleDefault;
    [message show];
}

运行界面后,获得的效果以下所示。

四、界面的横向布局

咱们知道,通常的IOS应用,能够竖着使用,也能够横着使用,若是界面支持,那么横着的话,也应该看起来很美观才能够,例如IOS里面的浏览器就是很好的例子,横竖总适宜的。

咱们上面方式建立的界面,虽然界面元素比较少,可是一旦横着来看,那么它的效果就是固定宽度的了。

若是须要让它们的元素可以根据界面自动调整,就须要设置控件的约束,以下所示。

一旦添加了约束,咱们选择输入框后,就会看到几个方向上的一些线条提示,以下所示。

经过指定几个不一样方向的约束,就可以很好的控制输入框的大小了,让它能够根据界面的调整而自动进行调整,运行模拟器,获得的界面效果以下所示,输入框的宽度已经可以自动伸缩了。

相关文章
相关标签/搜索