五花八门的控件

时间:2022-10-07 12:29:46

在上期的内容里,我们一起完成了经典的Hello World在iPhone上的实现。但相比iPhone上内置的各种程序,我们的Hello World显得过于山寨了。本期我们就来看看iPhone内置程序好看的基础:五花八门的控件。

小提示

这里不得不再拿出来那个恶俗的例子来说事:编程就像是搭智能积木,而控件就是为我们准备好的一系列半成品智能积木,我们需要的就是按照自己的构想,给这些智能积木做一些外观设定(要一个方的,圆的,还是三角形的,是红色的,还是蓝色的)以及一些行为设定(把其中一块积木抽走会怎样,在某个智能积木上按一下会不会响起音乐等),然后把它们组合到一起。这样,我们就能方便地利用这些半成品智能积木做出一个应用程序了。

“积木”在哪里?

iPhone的SDK内包含了很多控件。当我们巧妙地根据自身的需求来选择并使用好这些控件时,一个iPhone风格的程序也就完成了。虽然现在可用的控件数量已经不少了,但还是有很多的控件,或者某些控件的某些特性是没有开放给开发人员的。

为了达到用好控件的目的,我们必须要对它们是什么样的,能完成什么样的工作,可以被定制到什么程度等等这些问题有一定的认识。那么就走进允许我们使用的控件库中看一看,好好认识一下它们(以2.2.1版为基础)。

每当我们建立一个新的iPhone程序的工程时,如果留心观察一下,我们总能在Frameworks里面看到UIKit.framework的身影(见图1)。

这个我们经常见到的UIKit.framework就是最最主要的控件库了,程序界面中的可能会用到的各种控件都在其中。而如果说想知道它里面到底有什么样的控件可用,打开Interface Builder (可以在/Developer/Applications内找到),出现在Library里面(如果没有Library,请点击菜单上的ToolsLibrary),摆满了各种的控件(见图2)。

iPhone的“积木”

在Library中,我们可以看到,控件们被分成了4类,总共30多个控件,这里我们列出其中一些你可能会经常用到(见表),更多的可以从/cfan/200909/iphone.txt看到。

好了,到此为止,总共4大类的常用控件就介绍完毕了。在这里我只能尽力让大家对每个控件有一个大致的了解。想知道具体怎么使用,还要大家亲自动手尝试。亲自动手永远是学习最快的方法。

业内人士采访

上一期我采访了一位在香港进行iPhone开发的女孩,本期,我来给大家介绍一位来自宝岛的朋友,娃娃鱼。

被采访者:娃娃鱼

就职于:魔法家族 (迪恩崴股份有限公司)

职位:研发主管

通过前期的了解,我知道在接触iPhone开发之前,你主要从事Windows软件开发,那么感觉做iPhone的程序和做Windows的程序有什么异同呢?

娃娃鱼:

iPhone的程序感觉上比较有趣,而且想象的空间比较大,再加上iPhone在硬件规格上的统一,如屏幕的分辨率、硬件能力等。因此程序员在开发上就比较不需要去考虑太多硬件或系统上的不同。此外iPhone SDK在系统的操控上也提供了相当优秀、简单的存取方式与功能。Windows的开发要考虑到操作系统的不同、使用者的习惯(如分辨率)以及操作的界面上也得多花一点心思特别处理。另外还有就是国际化的设计,在iPhone上很简单的就能实现的多语言的展示及阅读,在Windows上就得耗上很多工夫来额外处理。Windows的开发大多以实用为目的,但iPhone往往却能以创意来取胜,这也是在iPhone开发上最有趣的地方。

那么在开始iPhone开发时,觉得入手难么?感觉入门时最大的困难是什么?

娃娃鱼:

其实在入门时最大的困难在于不熟悉iPhone SDK所使用的Objective-C语言以及MVC的操作概念。再加上早期的资源不多,除了官方的文件之外,无论是Objective-C或iPhone SDK,相关的教学范例或文件都极为缺乏,更别说有中文的资料了。因此在一开始的学习,努力K国外原文的资料就显得相当的重要。至于官方的文件虽然看似很多很丰富,但许多的范例或介绍对初学者来说,仍然显得太过于高级与复杂。不过这样的状况随着网络上分享教学的文章及范例增多,再加上国外已有多本的iPhone SDK开发书籍(部分也已有中文版),因此现在对iPhone开发有兴趣的朋友,在学习上将会比较容易多了。而一旦跨过基础功的门槛,观念一通,过去在程序设计上的经验也将慢慢地回来并融会贯通,这时的学习就更快速了。基本上打好马步,练好基本功还是很重要的,尤其是对于一个自己完全不熟悉的新语言。

我的一些朋友也对ObjC略显怪异的语法以及只有英文资料而苦恼了一阵。我注意到您出了一本《iPhone 3G 酷乐志》,介绍一些iPhone的操作及应用,相当于一本使用入门书。当时是怎么想到要出这样一本书呢?

娃娃鱼:

其实出书是出版社来找我,看是否有意愿写一本针对iPhone初学者的入门书。本来天真地以为把自己过去所发表的文章及教学拿出来整理一下就可以了,但事实上并非自己想象中那样简单。从大纲的拟定到内容的撰写,出书和写网络文章真的有很大的不同,出版社会考虑到的文章的实用与市场性,太难的不行,太复杂的也不可以。而在撰写的过程中,iPhone的系统及iTunes的软体也同时不断地改版,这也是相当困扰的地方。我个人本来是希望写一些进阶的教学,但出版社的编辑却认为市场性不够全数打回,不过,这写书的过程其实也是一种沟通的学习,蛮有趣的。

我深有同感,虽然写一个iPhone程序不是问题,但真得要像这个连载一样写出教程来,原有的那些看似够用的知识还是远远不足的。据我了解,您现在有两款iPhone软件已经完成,但由于Apple的问题,一直没能。可以透露一下是游戏还是应用软件么?一些朋友觉得Apple办事效率不好,影响很大,你怎么看呢?

娃娃鱼:

Pending Contract……(等待付款合同完成,是苹果公司向开发者付款的合同。合同不完成,软件即使通过审核也无法上架销售,包括免费软件),这可怕的状态是很多iPhone程序开发员的噩梦。Apple的行政效率在很多地方都看得出来有相当大改进的空间,如软体上架的审核,七天――我提交的软体几乎都是在第七天才会进行审核及回应。有问题退回重改提交后再七天。另外就是在Contract合约上的处理,所有的动作几乎都在网上完成了,但却需要所谓的高层人工审核,不说完成期限,写信询问也只能得到“Please Wait”的结果。有人等一个月,有人等两个月,而我自己本来已经通过,但在上星期Apple提出了一个合约增修条款,一按“同意”,又开始进入漫长的Pending Contract状态。已经提交审核的软体在通In Review的阶段后开始进入遥遥无期的等待。我目前提交的软体是属于应用软体,分别是台湾朋友生活上常使用到的“邸递区号”以及“银行代码”,都是相当简单的小程式并以免费的方式。一来试试Apple的上架流程,二来也训续自己在写比较正式软件上的经验(比如细节的注意等)。而自己接下来应该也会开始从小游戏的开发着手,毕竟游戏还是iPhone上主要的软体类型,此外开发起来也可能比较有趣。

Pending Contract 听起来太恐怖了,下次我一定不能随便点“同意”!最后是否可以对我们想要进入iPhone开发或者刚刚入门的读者一些意见或建议呢?

娃娃鱼:

呵呵,嗯,其实我自己也还在学习的阶段,若真要给建议的话,就是目前虽然网络上的范例很多,而教学文章也不少,但每位作者的写作风格或撰写程式方法不同,对初学者来说很容易混淆,因此,建议在学习上先以教学书籍开始,因为书籍在内容的编排与设定上会比较严谨,像《Beginning iPhone Development》(《iPhone开发基础教程》)这本就很不错,而目前也已经有中文版。此外,其他如语法的基础类如Objective-C或其他iPhone SDK开发书籍也都应该准备在身边,不是逐一阅读,而是当成参考手册,在实际开发时随时拿来翻阅。另外,多写多练习范例,把书中或网络上所教学的范例用自己的思考重新撰写一次。写多了,观念自然更清,而对iPhone SDK的应用也能更得心应手,千万不要看着做,然后做完就带过,一定要重新用自己的逻辑与思考方式来实际操作相同的范例。学习要到位,不然只是看过而没吸收,真要运用时反而会有忘光或无从下手的窘境。当然,多和相关学习者一同分享及讨论也是相当重要的。

上一篇:请个值班人,网页更新早知道 下一篇:小心,你的信用卡已被复制!