摘要:
Objective-C 实现类中Continuation Category(附加目录)是实现文件.m的一个特殊区域,我们可以在这里定义私有属性和方法。代码在@interface 和 @implementation 指令之间。Apple 称实现文件的附加目录(Continuation Category)为类的扩展(class extension)。类的扩展像匿名目录(anonymous category)一样,我们可以在这一区域定义方法(method)、属性(property)和实例变量(instance variable)。当然,方法的具体实现需要在@implementation 代码块中编. 阅读全文
posted @ 2012-10-17 16:54
周文
阅读(491)
评论(0)
推荐(0)
摘要:
UIScrollView滚动视图结合UIImageView图像视图实现图像缩放效果,包括监测手势识别器(Gesture Recognizer)等等。本范例项目,需要使用前面《一步一步学习iOS 5 编程(第三版) 》教程中的很多知识,包括导航控制器、表视图、联线(Segue)、UIScrollView和UIImageView等等。开发环境:Xcode 4.5 + iOS 6 iPhone 模拟器示例App – PhotoBrowser 应用程序 – 滚动图像和手势识别功能–最终运行界面如下所示:在示例代码中,我们手动编写代码,添加了2个触摸手势识别器的支持。// 添加手势识别器 - 一个手指. 阅读全文
posted @ 2012-10-17 16:51
周文
阅读(842)
评论(0)
推荐(0)
摘要:
1. 播放在App中的音频时,使用AVAudioPlayer;播放音乐库中的文件时,使用MPMusicPlayerController;2. 虽然MPMusicPlayerController 能够播放本地音频文件,但其主要用途还是集成现有的音乐库多媒体文件; 阅读全文
posted @ 2012-10-17 16:50
周文
阅读(606)
评论(0)
推荐(0)
摘要:
虽然Media Player 框架也可实现音乐播放功能,具体参考如下文章:iOS 6编程-使用MPMoviePlayerController类实现视频播放器但是Apple推荐使用 AV Foundation框架来实现音频播放功能。另外,AV Foundation框架还提供了录音功能,可以在App中之间录制声音文件。AVAudioRecorder — 录音功能;AVAudioPlayer — 播放音频功能;我们基于AV Foundation框架,实现了一个简单的音乐播放器MusicPlayer,App运行界面如下所示:示例App的功能是,播放在项目本地的多个 MP3 音频文件,示例App中添加. 阅读全文
posted @ 2012-10-17 16:49
周文
阅读(693)
评论(0)
推荐(0)
摘要:
在iOS 模拟器中测试音乐播放功能,使用多媒体选择器 MPMediaPickerController时,出现如下异常信息:reason: Unable to load iPodUI.framework模拟器无法访问设备的iPod 库,也就是无法访问设备的音乐库。要测试这一功能,必须使用实际设备,代码可以改进一下,捕获这一异常信息。- (IBAction)chooseMusic:(id)sender {MPMediaPickerController *musicPicker;musicPicker = [[MPMediaPickerController alloc] initWithMedia. 阅读全文
posted @ 2012-10-17 16:47
周文
阅读(408)
评论(1)
推荐(0)
摘要:
MPMoviePlayerController类可以播放多媒体文件,视频文件可以位于App文件系统中,或者远程URL处。下面是基于MPMoviePlayerController类实现的一个视频播放器App,项目名称 VideoPlayer。开发环境:Xcode 4.5 + iOS 6 iPhone 模拟器视频播放器VideoPlayer 运行界面:首先在项目中需要引入Media Player 框架,并在相应的类中添加接口文件的引用:#import <MediaPlayer/MediaPlayer.h>本示例项目全部源代码如下,代码中详细的注释。VideoPlayerViewCont 阅读全文
posted @ 2012-10-17 16:46
周文
阅读(3057)
评论(0)
推荐(1)
摘要:
具体异常信息:SimpleTable3[29418:11303] *** Terminating app due to uncaught exception ‘NSInternalInconsistencyException’, reason: ‘-[UIViewController _loadViewFromNibNamed:bundle:] loaded the “SimpleTableViewController” nib but the view outlet was not set.’libc++abi.dylib: terminate called throwing an exc. 阅读全文
posted @ 2012-10-17 16:45
周文
阅读(393)
评论(0)
推荐(0)
摘要:
写了一个简单的iOS App,演示UIScrollView滚动视图和UIPageControl分页控件的简单应用。本App功能是:在每一页显示不同背景演示的页面。UIScrollView滚动视图和UIPageControl分页控件进行关联,滚动到新的页面时,分页控件也会同步切换到新的页面,反之也如此。示例App 最终运行界面如下:开发工具:Xcode 4.5 + iOS 6 模拟器创建项目ColorScroll,类前缀也设置为ColorScroll,如下图所示。下面是本示例项目的完整源代码,代码中有比较完整的注释。ColorScrollViewController.h 头文件代码:#impo. 阅读全文
posted @ 2012-10-17 16:44
周文
阅读(464)
评论(0)
推荐(0)
摘要:
相关文章:iOS 6编程(14)-自动布局(Auto Layout)简介iOS 6编程(15)-创建自动布局(Auto Layout)简单应用iOS 6编程(16)-Interface Builder自动布局功能前面我们简单学习了自动布局的一些基础知识和Interface Builder中自动布局的一些功能。这里,我们进行通过一个示例App演示使用Interface Builder创建自动布局的约束,同时也演示了约束的优先级。进一步在布局画布上,添加了按钮和UIImageView图像视图,通过iOS 6 引入的自动布局和约束,可以方便灵活设计出纵向、横向模式都适应的应用程序。针对本范例App. 阅读全文
posted @ 2012-10-17 16:43
周文
阅读(303)
评论(0)
推荐(0)
摘要:
Interface Builder自动布局功能为了帮助基于约束来实现自动布局,Interface Builder增加了大量的功能,下面将阐述这些新功能。自动化约束从前一个范例中,我们知道在视图布局设计过程中,Interface Builder自动给子视图设置了约束。另外,需要知道Interface Builder自动添加的约束和开发人员手工添加的约束是有区别的。手动添加的约束认为是用户约束(user constraints)。Interface Builder 自动添加的约束首先需要调整为user constraints,然后才能删除。user constaints也可以配置为标准间距(st. 阅读全文
posted @ 2012-10-17 16:42
周文
阅读(1218)
评论(0)
推荐(0)
摘要:
相关文章:iOS 6编程(14)-自动布局(Auto Layout)简介创建自动布局(Auto Layout)简单应用在深入研究Interface Builder的自动布局特性之前,我们先创建一个简单的App,演示自动布局的基本概念。使用Xcode的Single View Application模板创建一个项目,项目名称为AutoLayout,类前缀也设置为AutoLayout,选择Storyboard和Automatic Reference Counting选项。在Interface Builder中启动和禁用自动布局功能默认情况下,针对Storyboard和单独的NIB文件都会启用自动布. 阅读全文
posted @ 2012-10-17 16:40
周文
阅读(1082)
评论(0)
推荐(0)
摘要:
iOS 6 在应用程序用户界面开发中,引入了自动布局(Auto Layout)概念。自动布局使用约束(Constraint)在用户界面描述各类视图的位置、行为和关系。在Xcode 4.5中,我们可以使用Interface Builder,或者可视化格式语言(Visual Format Language),或者标准的SDK API调用(NSLayoutConstraint类)等等三种方式来创建约束(Constraint)。Auto Layout用这些Constraints 来对所有的视图进行一些计算,设置视图的位置和尺寸。不再需要设置视图的frame属性,也就是完全基于针对视图或元素所设置的C. 阅读全文
posted @ 2012-10-17 16:39
周文
阅读(432)
评论(0)
推荐(0)
摘要:
删除数据记录当从UITableView中删除一行记录时,将调用commitEditingStyle方法。- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{if (editingStyle == UITableViewCellEditingStyleDelete) {// Get the object to delete from the arrayNo. 阅读全文
posted @ 2012-10-17 16:38
周文
阅读(824)
评论(0)
推荐(0)
摘要:
查询结果集结果集的查询,需要用到SQL Statement对象。Statement对象表示一条SQL语句,可以理解为prepared statement或者compiled statement。一般使用sqlite3_prepare_v2() 函数创建Statement对象。头文件中定义了2个成员变量:sqlite3 *noteDB;NSString *databasePath;示例代码如下所示:- (void) initializeDataToDisplay{self.noteArray = [[NSMutableArray alloc] init];const char *dbpath . 阅读全文
posted @ 2012-10-17 16:37
周文
阅读(897)
评论(0)
推荐(0)
摘要:
向表中插入记录向数据表Notebook中添加一条新的记事日志,成功插入记录后,会显示一个提醒视图。- (IBAction)addNote:(id)sender {char *errMsg;const char *dbpath = [databasePath UTF8String];if(sqlite3_open(dbpath, ¬eDB) == SQLITE_OK){NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO Notebook(Whattime, Address, What, Who, N 阅读全文
posted @ 2012-10-17 16:36
周文
阅读(804)
评论(0)
推荐(0)
摘要:
在使用SQLite API函数如有疑问,可以参考官方函数文档:http://www.sqlite.org/c3ref/funclist.html操作SQLite数据库SQLite数据库是文件数据库,是保存在文件系统中的。因此需要知道文件保存到哪里,下面的代码中,我们将Notebook.sqlite数据库存放在Documents目录下。其中涉及到SQLite数据库的创建、打开、创建数据表和关闭数据库等等操作。NSString *docsDir;NSArray *dirPaths;// 获取 documents 目录dirPaths = NSSearchPathForDirectoriesInD. 阅读全文
posted @ 2012-10-17 16:35
周文
阅读(356)
评论(0)
推荐(0)
摘要:
将照片库和App集成,可直接访问存储在iPhone、iPad 中的任何图像或拍摄新照片,并在App 中使用。1. 为了使用 UIImagePickerController,需要将类声明为遵守2个协议:UIImagePickerControllerDelegate和UINavigationControllerDelegate。@interface NoteViewController : UIViewController<UIImagePickerControllerDelegate, UINavigationControllerDelegate>2. 显示图像选择器下面是点击设置按 阅读全文
posted @ 2012-10-17 16:34
周文
阅读(407)
评论(0)
推荐(0)
摘要:
示例代码如下所示,调用NSMutableArray 对象的addObject方法,但是 count 方法总是返回 0,什么原因呢?for (MyObject *obj in self.Array){[self.noteArray addObject:obj];NSLog(@"Num items: %d", [self.noteArray count]);}这里,self.noteArray 是NSMutableArray 对象,[self.noteArray count] 总是输出0。出现上述问题的原因是:self.noteArray 没有初始化,仍然为nil,所以 cou 阅读全文
posted @ 2012-10-17 16:32
周文
阅读(592)
评论(0)
推荐(0)
摘要:
Automatic Property Synthesize 特性这个指的是在Xcode 4.5 编写代码时,在.h 头文件中定义了 @property 属性,之前还必须要在 .m 文件中编写 @synthesize 编译指令(自动生成getter、setter方法)。现在这个不需要做了。当然如果你乐意写@synthesize 代码,Xcode 也支持。 阅读全文
posted @ 2012-10-17 16:30
周文
阅读(203)
评论(0)
推荐(0)
摘要:
SQLite是一种轻量级嵌入式数据库,支持大部分标准SQL语法,非常适合做小型应用和作为临时数据存储工具。SQLite Manager – Firefox插件,完全能达到管理SQLite数据库的目的,类似于SQL Server的企业管理器,包括创建数据库,创建表,管理索引等,是一个很好的SQLite前端管理工具。SQLite Manager – Firefox 插件,点击Add to Firefox 按钮,就可以安装了。安装过程中,需要重启Firefox。安装完成之后,在Firefox的Tools 菜单下,可以看到SQLite Manager 菜单项。 阅读全文
posted @ 2012-10-17 16:29
周文
阅读(281)
评论(0)
推荐(0)
摘要:
在iOS SQLite App开发中,我们需要使用SQLite类库,在引用过程中,到底应该选择libsqlite3.0.dylib和libsqlite3.dylib哪一个呢?libsqlite3.0.dylib 是一个指向 libsqlite3.dylib 的连接,也就是目前而言,这两个library是完全一样的。网上有一些英文文章说,libsqlite3.dylib 是指向 libsqlite.3.0.dylib的连接,其实从上图可以明显看出,实际情况相反,libsqlite3.0.dylib 是连接文件,而原身是 libsqlite3.dylib文件。 阅读全文
posted @ 2012-10-17 16:27
周文
阅读(291)
评论(0)
推荐(0)
摘要:
iOS 6 提供了2个用来创建Core Data应用程序的模板。前面教程,我们选择了Single View Application模板,在App开发过程中编写了很多代码。如果使用现有的支持Core Data模板,则省事很多。Utility Application 模板 – 提供了一个主视图和一个交替视图,可以包含Core Data 功能,并生成所有的代码和配置。Master-Detail View Application 模板 – 生成包含导航视图控制器、表视图和详细视图控制器的应用程序,可以用来显示来自Core Data持久化存储数据库的数据。我们选择是一个Utility Applicat. 阅读全文
posted @ 2012-10-17 16:25
周文
阅读(169)
评论(0)
推荐(0)
摘要:
本教程内容篇幅比较长!Core Data 属于 iOS App开发的进阶内容了。运行ShoppingCart应用程序代码编写好了,我们运行App测试一下。因为UI 视图界面并没有进行任何编码,因此没有什么变化,重点是Xcode调试器控制台的输出内容。NSLog语句的输出就显示在这里的。这些输出内容,刚好符合我们的预期。Customer 实体中只有一条记录,购物车编号:100,而且购物车添加了2个具体的商品。检查 SQLite数据库前面我们说过,SQLite数据库文件存放在App的Document目录下,数据库文件名为ShoppingCart.sqlite,怎么找到它呢?使用Finder 切换. 阅读全文
posted @ 2012-10-17 16:23
周文
阅读(351)
评论(0)
推荐(0)
摘要:
编写Core Data代码在前面创建Data Model的过程中,我们已经创建3个被管理对象(NSManagedObject),也就是实体对象。这里,我们创建其他Data Core框架中的对象,启用Core Data数据持久化存储功能。打开项目中的CartAppDelegate.h文件,添加NSManagedObjectContext属性和2个方法的原型定义。更新后的代码如下所示:#import <UIKit/UIKit.h>@interface CartAppDelegate : UIResponder@property (strong, nonatomic) UIWindow 阅读全文
posted @ 2012-10-17 16:20
周文
阅读(294)
评论(0)
推荐(0)
摘要:
本节内容篇幅比较长!Core Data 属于 iOS App开发的进阶内容了。下面先使用Core Data实现一个简单的范例ShoppingCart。本范例App不利用框架自动生成代码,完全自己编写所有的 Core data 相关代码,来深入理解 Core Data框架中主要类的使用。使用Xcode的Single View Application模板,创建ShoppingCart项目,类前缀为Cart,如下图所示。添加CoreData Framework框架在ShoppingCart项目创建完成之后,我们需要添加CoreData Framework框架到项目中。详细操作步骤,可以参考-开发定. 阅读全文
posted @ 2012-10-17 16:18
周文
阅读(389)
评论(0)
推荐(0)
摘要:
Core Data是iOS编程中使用持久化数据存储的一种方式。在以前的教程 – 读写应用程序的设置数据,我们已经提供了三种方式来实现App数据的存储,分别为:(1) 用户默认设置 – 这种情况通常不需要用户干预,如游戏通关信息,Video播放记录,或者App退出之后,下次进入时,希望恢复到退出时的情况。(2) 设置束(Settings Bundle)– 提供了一个通过iPhone、iPad的设置(Settings)应用程序进行配置的接口。(3) 直接访问文件系统 – 读写属于当前App的iOS 文件系统部分的文件。在一些情况下,我们可以考试使用Core Data来持久化数据。需要知道的是,C. 阅读全文
posted @ 2012-10-17 16:17
周文
阅读(270)
评论(0)
推荐(0)
摘要:
异常信息:Terminating app due to uncaught exception ‘NSInvalidUnarchiveOperationException’, reason: ‘Could not instantiate class named NSLayoutConstraint‘具体场景:Xcode 4.5 选择iPhone、iPad 5.0/5.1 Simulator(模拟器)解决办法:需要关闭storyboard或xib界面文件的Use Auto Layout 选项,这是因为Auto Layout特性是iOS 6 新增加的,在之前的 5.0/5.1 Simulator模. 阅读全文
posted @ 2012-10-17 16:12
周文
阅读(192)
评论(0)
推荐(0)
摘要:
分割视图控制器(UISplitViewController)仅适用于iPad,可以在一个iPad屏幕中显示2个不同的场景。在横向模式下,屏幕左边的三分之一为主视图控制器的场景,而右边则包含向详细视图控制器场景。在纵向模式下,UISplitViewController隐藏主视图控制器的场景,详细视图控制器管理的场景占住整个屏幕,但可以通过Popover(弹出菜单)访问主视图场景。Popover是在当前视图之上的一个弹出窗口,在分割视图控制器中,一般可以通过详细视图中工具条(toolbar)按钮来访问或触发。在iPad返回横向模式时,主视图场景和详细视图场景重新回到并排显示,且Popover的访. 阅读全文
posted @ 2012-10-17 16:11
周文
阅读(769)
评论(0)
推荐(0)
摘要:
在iOS App开发过程中,在UIImage中加载来自URL的图像,可以通过如下的Objective-C代码来实现,下面是表视图中加载图像的一段代码:NSDictionary *object = _objects[indexPath.row];cell.textLabel.text = [object objectForKey:@"ProductName"];cell.detailTextLabel.text = [[object objectForKey:@"CurrentPrice"] description];NSString *myURL = [ 阅读全文
posted @ 2012-10-17 16:07
周文
阅读(742)
评论(0)
推荐(0)
摘要:
默认Xcode 中的iPhone、iPad 模拟器都是黑色的背景图,无法像正常的iPhone 一样设置其主屏幕和锁定屏幕的图像,但可以按照下面的操作来实现(在模拟器显示的情况下,按住Command + L 键,可以显示锁定屏幕):1. 从Finder 中拖放一个图像文件从模拟器界面;2. 默认的Safari浏览器会打开,点击并按住图像文件;3. 在弹出菜单中,选择 — 存储图像;4. 返回模拟器中的–照片App,打开该App,选择你喜欢的图像文件;5. 按照在iPhone/iPad 设备上的操作,设置图像文件为主屏幕和锁定屏幕的背景图;锁定屏幕界面: 阅读全文
posted @ 2012-10-17 16:05
周文
阅读(552)
评论(0)
推荐(0)
摘要:
图标是iOS程序包所必需的组成部分。如果没有提供程序所需的各种尺寸的图标,程序上传发布时可能会无法通过验证。iOS程序为兼顾不同的应用场景,定义了多个不同规格的图标,并以不同的命名区分。在将图标文件或者启动图像文件拖放到Xcode的图像区域时,该图像文件将自动复杂到项目文件夹中,并出现在项目导航栏中。我们可以将这些文件拖放到项目的Supporting Files 中。选择导航栏区域顶部的项目名称,在项目的Summary 窗口进行操作。将图标文件和启动图像文件拖放到Support Files 文件夹下。关于在iPhone、iPad的App中添加启动图像文件,可以参考我们之前的教程 -如何在iO. 阅读全文
posted @ 2012-10-17 16:03
周文
阅读(338)
评论(0)
推荐(0)
摘要:
使用Xcode提供的Universal选项,可以创建通用应用程序。通用应用程序有两个storyboard文件,这点在之前的范例App都没有创建过。针对不同的设备,创建的两个storyboard文件分别为:MainStoryboard_iPhone.storyboard和MainStoryboard_iPad.storyboard。可以使用Xcode中的Single View Application 模板创建一个简单的、通用的App。项目名称为UniversalApp,类前缀为Uni。生成的Xcode项目文件中,我们发现有2个Storyboard文件。具体而言,有2种方法来实现通用应用程序。第. 阅读全文
posted @ 2012-10-17 16:02
周文
阅读(583)
评论(0)
推荐(0)
摘要:
在iOS 5 编程-工具栏UIToolbar和日期选择器UIDatePicker的应用中,演示了UIDatePicker 日期选择器的使用。这里将创建一个自定义的选择器视图,提供的范例App在iPad 模拟器中运行,iPhone的版本稍有差异。iPad 采用popover 弹出式视图,iPhone 版本采用模态视图,这个符合Apple的UI设计规范(Apple要求必须在弹出框中显示选择器)。范例App的运行界面如下所示(iPad模拟器):要实现自定义选择器视图,必须实现类遵守选择器委托协议(UIPickerViewDelegate)和选择器数据源协议(UIPickerViewDataSour. 阅读全文
posted @ 2012-10-17 16:00
周文
阅读(719)
评论(0)
推荐(0)
摘要:
选项卡栏控制器(UITabBarController)-用户触摸不同的选项卡,应用程序在不同的场景间切换,每一个场景都呈现了App的一项功能。选项卡栏控制器(UITabBarController)管理的场景必须包含一个选项卡栏项(UITabBarItem),它包含标题、图像和徽章(包含数字的红圈)。App运行图中有展示。范例App运行界面如下图所示:如下修改选项卡栏按钮属性?要修改选项卡栏按钮,必须在相应的场景中进行,而不能在选项卡栏控制器场景中进行修改。选择场景视图中的选项卡栏项(UITabBarItem),然后在Attributes Inspector窗口,维护相应的属性。可以自定义图像. 阅读全文
posted @ 2012-10-17 15:58
周文
阅读(308)
评论(0)
推荐(0)
摘要:
本文演示了Storyboard 多场景和切换(Segue)的应用。在使用模板Single View Application创建iPhone App时,只包含一个视图控制器和一个视图,也就是只有一个场景。不过,可以很容易在Storyboard中添加场景。本范例App的运行界面如下图所示:1. 将View Controller 从对象库中拖曳到Storyboard 空白编辑区,就在Storyboard中添加一个视图控制器和相应的视图。2. 对于每一对新添加的视图控制器和视图,一般而言,还需要提供支持的类文件(继承UIViewController)。3. 需要将场景的视图控制器和新创建的类(继承U. 阅读全文
posted @ 2012-10-17 15:53
周文
阅读(323)
评论(0)
推荐(0)
摘要:
目前,弹出框(Popover)是iPad设备特有的功能和特性(iPhone 尚不支持)。用户只需触摸弹出框外面,就可关闭弹出框。在storyboard的interface builder中,拖曳编辑按钮(初始视图)到目标视图控制器(也就是弹出框窗口)图标上,在弹出切换类型菜单中,选择popover类型,如下图所示:切换(Segue)对应的Attributes Inspector窗口,可检查相关的属性:然后根据需要对弹出框的视图大小(Size Inspector窗口)和UI进行必要的编辑设计。范例App的相关代码:1. 首先初始视图控制器需要实现UIPopoverControllerDeleg. 阅读全文
posted @ 2012-10-17 15:52
周文
阅读(484)
评论(0)
推荐(0)
摘要:
本文演示了工具栏UIToolbar和日期选择器UIDatePicker的应用,范例App运行界面如下所示:工具栏UIToolbar – 一般显示在底部,用于提供一组选项,让用户执行一些功能,而并非用于在完全不同的UI界面之间切换;在不同 UI 界面切换,是选项卡 Tab Bar负责的。日期选择器UIDatePicker - 一般将其Value Changed 事件连接到一个操作方法,读取其返回值,其返回一个NSDate 对象。可以在Attributes Inspector窗口对UIDatePicker进行定制:范例App的主要代码,如下所示:下面2个方法在UIDatePicker视图控制器中. 阅读全文
posted @ 2012-10-17 15:50
周文
阅读(369)
评论(0)
推荐(0)
摘要:
Objective-C中的命名前缀说明:NS:NextStepCF:Core FoundationCA:Core AnimationCG:Core GraphicsUI:User InterfaceObjective-C与C++的不同之处有:Objective-C中所有的类都必须继承自NSObject。Objective-C中所有对象都是指针的形式。Objective-C用self代替this。Objective-C使用id代替void*。Objective-C使用nil表示NULL。Objective-C只支持单继承。Objective-C使用YES/NO表示TRUE/FALSEObjec. 阅读全文
posted @ 2012-10-17 15:14
周文
阅读(249)
评论(0)
推荐(0)


浙公网安备 33010602011771号