Quartz 2D提供了许多函数,这些函数简化了复杂形状创建。若要绘制一个矩形或一个多边形,实际上你不必计算角度,绘制直线或者根本不必进行任何数学计算。你只需调用一个Quartz函数即可实现该操作。例如,绘制椭...
使用Quartz 2D,可以在上下文中直接绘制图像。这是Objective-C类(UIImage)的另一个示例,你可以使用此类作为操作Core Graphics数据结构(CGImage)的备用选项。此UIImage类包含将图像绘制到当前上下文中的方...
颜色是绘图的一个重要因素,因此理解颜色在iPhone上的运行原理是非常重要的。UIKit为此提供了一个Objective-C类:UIColor。你不能在Core Graphic调用中直接使用UIColor对象,但可以像我们之前在以下代码片段中所...
在上面的代码块中,我们将一对浮点数作为参数传递给CGContextMoveToPoint()和CGContextLineToPoint()。这些浮点数表示在Core Graphics坐标系中的位置。此坐标系中的位置由其x和y坐标表示,我们通常用(x, y)来表...
使用Quartz绘制图形时,通常会向绘制图形的视图中添加绘图代码。例如,可能会创建UIView的子类,并向该类的drawRect:方法中添加Quartz函数调用。drawRect:方法是UIView类定义的一部分,并且每次需要重绘视图时都...
下一个应用程序是一个简单的绘图程序(参见图12?1)。我们将分别使用Quartz 2D和OpenGL ES来构建该应用程序,因此你会真正感受到它们之间的差别。该应用程序的特点是顶部和底部各有一个工具栏,每个工具栏都有...
到目前为止,本书中的所有应用程序都是通过UIKit框架中的视图和控件来构造的。借助这些常备组件,我们可以执行许多操作,并且可以构造各式各样的应用程序界面。但是,如果不能高瞻远瞩,某些应用程序会无法完全实...
感觉怎么样?这一章的内容极其重要,你已经学习了很多!你应该对平面表(flat table)的工作方式有了非常好的理解,并了解了如何自定义表和表视图单元,以及如何配置表视图。你还了解了如何实现搜索栏,在任何呈...
3. 修改viewDidLoad在viewDidLoad中,我们进行了一些更改。首先,把属性列表加载到allNames字典而不是names字典,删除加载keys数组的代码,因为现在使用resetSearch方法完成加载。然后调用resetSearch方法,它填...
1. 从allNames复制数据键入上述所有代码之后,你还跟得上进度吗?让我们停下来看一看刚才的代码。先看一下添加的两个新方法。这是第一个方法:取消搜索或更改搜索条件时将调用此方法。它所做的是创建allnames的...
对搜索栏进行的更改非常大。对SectionsViewController.m做如下更改,然后快速返回,查看这些更改。
在Interface Builder中双击SectionsViewController. xib,打开该文件。打开之后,选中表视图,然后使用顶部的调整大小的工具将视图缩短一些,为顶部的搜索栏腾出一些空间。不要担心如何精确地进行调整,你在一...
下一步,我们需要向控制器头文件添加一些输出口。表视图需要一个输出口。目前为止,我们还没有用到数据源方法之外指向表视图的指针,现在就需要一个,因为我们需要根据搜索的结果通知表重新加载它自己。我们还需...
现在存在一个问题,NSDictionary遵循NSMutableCopying协议,该协议返回一个NSMutableDictionary,但是这个方法创建的是浅副本。也就是说,调用mutableCopy方法时,它将创建一个新的NSMutableDictionary对象,该对...
索引是很有用的,即便如此,此处我们仍然有非常多的名称。例如,如果要查看名称Arabella是否存在于列表中,使用索引之后仍然需要拖动滚动条。如果能够通过指定搜索项简化该列表就好了,对不对?这样对用户更友好...
当前表的一个问题是行数太多了。此列表中有2000个名称,要找到Zacharian或Zebedian,你的手指会非常累,更别说Zojirishu了。这个问题的一个解决方案是,在表视图的右侧添加一个索引。既然我们已经把表视图样式改...
单击SectionsViewController.h文件,添加NSDictionary和NSArray实例变量及其相应的属性声明。字典将保存所有数据。数组将保存以字母顺序排序的分区。还需要让类遵循UITableViewDataSource和UITableDelegate协议:...
要完成此项目需要大量的数据。我们提供了另一个属性列表,为你节省几个小时敲键盘的时间。从本书随附的项目归档文件的08 Sections文件夹中找到名为sortednames.plist文件,把它添加到项目的Resource文件夹中。完...
8.6 分组分区和索引分区下一个项目将探讨表的另一个基本内容。仍然使用一个表视图(没有分层),不过我们将把数据分为几个分区。再次使用基于视图的应用程序模板创建一个新的Xcode项目,这一次将它命名为Sectio...
3. 使用新的表视图单元要使用我们设计的单元,必须对CellsViewController.m中的talbeView:cellForRow- AtIndexPath方法做一些大的改动。删除当前的talbeView:cellForRowAtIndexPath方法,用下面的新版本代替:...