7天玩转iOS 界面开发(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-01 12:34:13

点击下载

作者:张益珲

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

7天玩转iOS 界面开发

7天玩转iOS 界面开发试读:

前言

iOS应用程序开发是移动开发的一个方向,近年来,随着移动开发越来越热,越来越多的人进入iOS应用开发这一领域。然而,无论对于刚从学校出来的毕业生,还是相关行业的从业者,学习并掌握一种新的开发技能都不是一件容易的事情。从零到完全有能力独立开发一款iOS应用程序,一般要经历四个阶段。

第1阶段是平台语言的学习。iOS应用程序可以使用两种语言来进行开发,即已经比较成熟的Objective-C和相对年轻的Swift,对语言的学习要多写多练,培养编程的感觉与思路。

第2阶段是学习iOS开发框架的界面开发部分。因为移动端应用直接与用户交互,而界面是其重要的组成部分,因此这一阶段主要学习iOS界面框架架构、开发框架中提供的系统UI控件以及掌握自定义UI控件的相关知识。经过此阶段的学习,读者将具备编写商业界面、完成应用独立模块的能力。

第3阶段主要学习应用网络交互的相关知识,使得应用程序不再只是单机运行,而是可以进行网络交互。

第4阶段为实战阶段,这个阶段将通过实战项目,综合应用前面所学的知识,使读者具备独立开发能力。

上面的四个阶段是学习iOS应用开发的必经之路,本书面向的读者对象是学习了语言基础正处于学习界面开发阶段的iOS开发学习者,或者想更深入了解iOS界面开发技巧的iOS开发从业者。

天下武功,唯快不破。本书将展开介绍iOS开发框架中的各种系统UI控件,并提供一些实战例子帮助读者快速地熟练应用这些控件。学习开发框架中的UI控件和学习基础语法有很大不同,对于语法的学习,要刨根问底,掌握每一个细节知识点。而学习开发框架中的UI控件时,读者不必纠结实现原理,只需知道什么时候用、怎么用、如何扩展即可。因而本书在编写时,始终抓住这个原则,将iOS开发中最常用、最核心的UI控件与界面开发技巧整合扩展,整理成7天的教程,正如书名《7天玩转iOS界面开发》。相信通过对本书的学习,读者可以迅速掌握iOS界面开发的脉络。

本书第1天和第2天安排的教程为基础部分,主要介绍iOS开发框架中简单的独立UI控件,其中也会插入一些小例子和实战演练。

第3天的教程为高级UI控件的介绍,这类UI控件需要通过代理、布局类等复杂的方式才能使用,同样,其功能也更加强大,可以创建出更加灵活的布局界面。

第4天教程将介绍视图控制器相关的知识,通过这部分知识,读者将不再局限于独立的UI控件,而是综合使用这些UI控件和控制器编写出完整的程序界面。

第5天的内容是iOS动画开发专题,学习界面开发就不得不学习动画,漂亮的动画效果是界面设计成功的重要保障。通过对第5天内容的学习,读者将全面了解iOS开发框架中处理动画的思路,并有能力处理绝大部分实际开发中的动画需求。

第6天的内容将介绍iOS应用开发的界面布局策略,这部分的知识对屏幕适配、横竖屏界面兼容等意义重大。

本书最后一天的内容将作为补充章节,向读者介绍更多UI方面的开发技巧。

本书中所有例子和演示代码都可在如下地址下载到,所有代码均可直接使用Xcode开发工具进行运行:

http://pan.baidu.com/s/1dENCo6X

由于能力有限,书中错误或疏漏在所难免,欢迎读者及时反馈并与我交流,共同进步。我的QQ:316045346。

最后,本书可以成功完成,要感谢所有帮助过我的老师和朋友,感谢家人与女友的支持。第1天iOS基础UI控件(上)

本章将介绍讲解iOS开发中必然用到的一些基础控件,这些控件有些仅仅用于展示文字或者图片,如UILabel、UIImageView;有些控件则可以进行简单的用户交互,例如UIButton、UISegmentedControl等。本章中的这些控件十分简单,却是一个应用程序中必不可少的部分,通过对这些简单控件的封装和扩展,开发者们才能够创造出各种酷炫的界面效果。1.1承载文字的精灵——UILabel

如果要问在一款iOS应用的开发中,什么控件出现的频率最高,大多数开发者都会说那一定是标签控件(UILabel)。UILabel用于展示一行或多行的文本,除了展示,其还可以设置文字的相关属性。学习iOS界面开发,UILabel也是最易理解和扩展的控件,通过它,读者将踏进iOS界面开发的神奇世界,循序渐进,在双手间的代码中创造出炫酷迷人的UI效果。1.1.1 创建第一个iOS项目Hello World

大多程序员都有Hello World情结,这并不奇怪。Hello World是大多数语言学习教程的第一个示例程序,虽然大多数情况它只是命令行中的一串字符,但却给无数初学者带来了程序世界的真挚问候。关于UILabel的学习,我们也从Hello World开始。

打开Xcode开发工具,在如图1-1所示的欢迎窗口中,单击“Create a new Xcode project”选项,创建一个新的工程。图1-1 Xcode初始欢迎界面

建议:如果你对Xcode的使用和功能还不太了解,可以查看相关资料先行了解,也可以跟着本书中的步骤来操作,在实践中熟悉Xcode的使用。

在模板选择界面中单击iOS中的“Application”选项,接着单击“Single View Application”选项,之后单击“Next”按钮进行下一步,如图1-2所示。图1-2 使用Xcode创建工程模板

在工程设置界面,需要填写工程的一些基本信息,如图1-3所示。Product Name栏需要填写工程的名字,Organization Name栏用于填写组织或者公司的名字,Organization Identifier用来填写组织或公司的标识符,Bundle Identifier是当前工程的标识符,默认创建为公司组织ID加上工程名。工程的标识符可以在工程创建后的配置plist文件中进行修改,如果应用程序上线,那么这个Bundle Identifier将作为应用程序的唯一标识。Language栏用于选择开发使用的语言,Xcode支持两种语言进行iOS开发:比较完善的Objective-C和相对年轻的Swift。它们各有优势,本例采用Objective-C语言演示,读者只需使用自己熟练的语言即可。Devices选择程序运行的平台,有iPhone、iPad、Universal三种,分别对应iPhone手机、iPad平板电脑和通用型。填写好上述信息后,单击“Next”按钮进行下一步。图1-3 进行新建工程的相关配置

在弹出的选择工程存储位置窗口中选择工程保存的位置,如图1-4所示。之后单击“Create”按钮完成工程的创建。图1-4 选择工程存放目录

观察创建好的iOS模板项目工程,可以在Xcode界面的左侧导航栏中看到如图1-5所示的目录结构,结构中主要分为了两个目录:Hello World文件夹和Products文件夹。Hello World文件夹和工程名对应,其中存放工程代码及一些素材和配置文件,Products文件夹用于存放编译后的可执行文件。

在Hello World文件夹中,系统模板为开发者创建好了这样几个文件:AppDelegate类是程序的入口;ViewController是程序的根视图控制器;以storyboard为后缀的文件是一种可视化界面编程的工具文件;Assets.xcassets是图片素材管理器,用于存放管理项目中需要使用的图片素材;最后Info.plist文件存储项目的一些属性配置字段。图1-5 模板工程的结构

了解了iOS项目的目录结构后,下面来牛刀小试一把。单击Main.storyboard文件,Xcode界面将切换到可视化的编辑界面,如图1-6所示。系统默认是选中“Use Size Classes”选项的,初学者可以先将这种自适配的配置关闭,以便于观察效果。取消勾选“Use Size Classes”选项,之后在弹出的对话框中将适配类型设置为iPhone,最后单击“Disable Size Classes”按钮确认。

可以看到Xcode界面中间区域出现了一个类似于iPhone屏幕的视图容器,可以通过拖曳的方式将一些系统控件布局在这个iPhone屏幕上。这种可视化的编程工具的确很赞,不仅使编程门槛降低很多,便于初学者学习,并且在很大程度提高了界面相关代码的编写效率。在Xcode右下角的控件区找到Label控件,如图1-7所示。图1-6 取消勾选“Use Size Classes”选项图1-7 storyboard中的Label控件

选中“Label”项,将其拖曳到视图的中央,如图1-8所示。

通过拖曳Label控件的边界,可以调整Label的大小,双击Label控件,可以进入编辑状态。例如,可以在其中输入文字“Hello World”。选择一个iPhone模拟器,单击“运行”按钮,过程如图1-9所示。图1-8 将Label控件拖曳进视图图1-9 在模拟器中运行工程

小提示:第一次启动iPhone模拟器可能会需要一些时间,无须着急,耐心等待即可。

待iPhone模拟器运行后,读者的第一个iOS程序就完成了,即使用UILabel控件在手机屏幕上展示了Hello World文字标签,如图1-10所示。图1-10 Hello World工程的运行效果1.1.2 使用代码重建Hello World项目

通过前面的小试,你或许会发现storyboard是如此的强大与便捷,有时候开发者甚至可以不写一句代码就创造出炫酷的界面效果,但这对于初学者来说并不一定全是好事。千里之行,始于足下,要想成为一名优秀的iOS开发者,对代码的掌控能力远远要比学会使用storyboard来拖曳界面重要得多。现在,就通过代码再来重建一下Hello World项目吧。

建议:初学开发时以代码为主,熟练之后再使用storyboard进行机械重复的UI开发工作。

打开前面已经创建好的Hello World项目,在Main.storyboard文件中将拖入的Label控件删掉。单击ViewController.m文件,这时Xcode的主界面将变为编码区,ViewController类其实就是在Main.storyboard中看到的根视图控制器,从storyboard文件中向其上面添加控件和在ViewController.m文件中添加控件的效果相同。

在ViewController的viewDidLoad方法中编写如下代码:

编写上面的代码,运行模拟器后,可以看到屏幕上显示了写有“Hello World”的Label标签控件,后面我们会对这段代码做详细的讲解。1.1.3 iOS系统中的UI坐标系

在1.1.2节的代码中,下面这句代码完成了UILabel标签控件的创建与初始化:

alloc方法在系统中为label指针分配了地址空间,initWithFrame:方法是UILabel类的一个初始化方法,其中需要传入一个CGRect类型的参数,这个参数决定了UILabel控件的位置和尺寸。

CGRectMake()方法用于创建一个CGRect对象,这个方法中需要传入四个浮点类型的参数,分别代表着控件的X坐标、Y坐标、宽度和高度。例如,1.1.2节的代码中传入的100、100、120和40可以理解为在X轴坐标为100个单位、Y轴坐标为100个单位的位置,创建一个宽度为120个单位、高度为40个单位的UILabel控件。

确定一个位置时,除了坐标外,还需要一个确定的坐标系为参照,不然坐标是没有任何意义的。在数学中,坐标系的规定为横向为X轴,向右为正;纵向为Y轴,向上为正,如图1-11所示。在iOS的UI系统中,坐标系与其相似,有略微不同。在iOS的UI系统中,横向为X轴,向右为正;纵向为Y轴,不同的是,Y轴是向下为正,如图1-12所示。可以这样理解,我们的手机屏幕就是一个坐标平面,屏幕的左上角的坐标系为原点,向右,X坐标渐增;向下,Y坐标渐增。图1-11 数学中的坐标系图1-12 UI系统中的坐标系1.1.4 UILabel的相关属性设置

在前面的示例中,通过UILabel类中的text属性设置了UILabel控件上显示的文字,其实UILabel类中还有许多属性可以让开发者进行UILabel控件的定制化。下面代码片段中示例了一些常用的属性:

在上面的代码中,textColor属性设置了UILabel控件中字体的颜色,与其对应的是,我们需要设置一个UIColor类型的对象。UIColor类有许多的类方法可以帮助开发者快速创建出常用的颜色,支持的颜色如下:

font属性用于设置文字的字体,systemFontOfSize:方法创建系统默认的字体,传入的浮点型参数设置字体的字号大小。

backgroundColor属性设置UILabel控件的背景颜色,与textColor相同,也是通过UIColor对象进行设置的。

textAlignment属性设置UILabel文字的对齐模式,默认为左对齐,通过下面的参数可以设置其他文字对齐模式:

shadowColor设置UILabel控件文字的阴影颜色,需要通过UIColor对象进行设置。

shadowOffset设置控件文字阴影的偏移尺寸,需要通过CGSize对象进行设置。CGSize对象比CGRect对象少了两个坐标参数,只有宽度和高度的参数。

添加上面的设置代码后,再次运行程序,会看到UILabel控件有了很大的UI变化,如图1-13所示。图1-13 自定义属性的UILabel控件1.1.5 多行UILabel控件与换行模式

在开发中,并非所有遇到的UILabel控件都是单行的,有些时候由于字数限制,开发者需要对某些文字进行多行排版。UILabel类非常易用的为开发者封装了设置多行文本的相关方法,示例代码如下:

运行工程可以看到,由于UILabel控件的宽度有限,因此多出的文字被截断了,如图1-14所示。图1-14 文字尺寸超出Label控件宽度

在UILabel对象进行文字排版布局时,默认会以单行的模型进行布局,超出宽度的部分将会被截断。我们可以通过下面的属性设置UILabel控件文字的排版行数:

numberOfLines属性可以设置Label控件文字的排版行数,如果设置为0,则为无限行,直到文字显示完全。

小提示:除了munberOfLines这个属性会限制UILabel控件的文字排版行数外,UILabel控件的尺寸高度也会将超出其显示范围的文字切断,因而我们需要将前面代码

UILabel初始化方法中的CGRectMake方法中的第四个高度参数改得大一些,例如CGRectMake(100,100,120,100)。

经过修改后,再次运行工程,会看到如图1-15所示的效果,文字是以单词为整体进行换行的。图1-15 UILabel控件的文字换行

UILabel类中有相应的属性来对换行和文字截断模式进行设置,例如:

lineBreakMode属性设置UILabel控件的换行和截断模式,可以设置的枚举值如下:

换行模式

截断模式

小提示:lineBreakMode这个属性是通过枚举来进行设置的,并且有这样一个特点,可以使用简单的位运算符进行复合设置。例如,设置以单词为标准换行并且截断模式为头部截断,可以如下设置:1.2最简单的交互控件——UIButton

UILabel是iOS界面开发中最简单的文字承载控件,与之对应的,在iOS中,最简单的用户交互功能由UIButton来实现。顾名思义,UIButton用于创建一个按钮控件,通过用户的单击、双击、长按等手势操作,可以触发程序的一些交互逻辑。1.2.1 在屏幕上创建一个UIButton控件

仿照第一节创建工程的步骤,通过Xcode创建一个命名为UIButtonTest的工程。在ViewController.m文件的viewDidLoad方法中添加如下代码:

在初始化并创建UIButton对象时,使用的是buttonWithType这一类方法,与UILabel的创建略有不同,这个方法中需要传入一个UIButtonType类型的对象,这个参数决定了创建出的UIButton控件的风格,枚举值有如下几种:

其中,Custom和System两种风格样式类似,System风格只是默认设置了一些类似标题颜色、按钮高亮状态时的样式等属性,Custom风格需要开发者手动设置这些属性,如图1-16所示。DetailDisclosure风格会显示一个系统自带的详情图标,InfoLight风格和InfoDark风格在UI上与DetailDisclosure风格没什么差别,如图1-17

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载