Passbook详解与开发案例
转自关东升的博客
Passbook是iOS 6的新功能,只能在iPhone和iPod touch设备中使用。它可以帮助我们管理商家发放的电子会员卡、积分卡、优惠券等。这将对未来电子商务产生深远的影响。商家通过发放会员卡、积分卡、优惠券等,提高与消费者的互动,吸引人们更多消费。Passbook的诞生,正是为了将所有这些“卡”和“券”电子化,存放在iPhone或iPod touch里。
Passbook与Pass
iOS 6中的Passbook能够帮助我们集中管理电子“卡”和“券”,这些电子“卡”和“券”就是Pass,Passbook是这些Pass集合管理应用。Passbook与Pass关系,Passbook是我们的“卡包”,而Pass是里面的“卡”和“券”。
当我们选择其中一个卡片后,卡片会滑出来,点击右下角“i”按钮会翻转到背面。在点击左上角的垃圾桶按钮可以删除,弹出一个具有金属质感的“碎纸机”样式的确认框,当点击“删除”按钮后,“碎纸机”会将卡片粉碎,还有动画效果。每次用到这个功能的时候我都很惊叹,苹果对于细节的设计无可挑剔。
Pass的5种风格
iOS 6目前提供了5种风格的Pass,它们分别是:
Boarding passes(登机牌)。虽然从字面翻译为“登机牌”,但是它包括了登机牌、火车票和船票等种类的票证,在Pass上面有起点和终点,时间和登机口等信息。
Coupons(优惠券)。或者打折卡,描述商品的优惠或打折信息的电子凭证。一般上面会有商家的logo,打折比例,使用期限等信息。
Store cards(购物卡)。描述了用户在商场或俱乐部中的账号余额电子凭证。一般上面会有用户级别等信息。
Event tickets(入场券)。描述了体育比赛、演唱会、音乐会等入场券的电子凭证。一般上面会有一个大的背景图片,这个图片背模糊化了,还可以有清楚的缩图。
Generic(通用卡)。如果上面的4种不能满足,我们可以使用这一种,它可以是自定义上面的内容。一个通用卡类型的会员卡。
Pass的内部结构
每一个Pass是一个ZIP格式的压缩文件,这文件文件的后缀名是pkpass,它通过一些特殊的方式发给用户使用,这些特殊的方式我们会在后面介绍。如果我们把pkpass文件使用解压缩软件打开,会看到如下内容:
Pass
├── icon.png
├── icon@2x.png
├── logo.png
├── logo@2x.png
├── thumbnail.png
├── thumbnail@2x.png
├── background.png
├── background@2x.png
├── strip.png
├── strip@2x.png
├── manifest.json
├── fr.lproj
│ └── pass.strings
├── de.lproj
│ └── pass.strings
├── pass.json
└── signature
pass.json文件是Pass的核心,它描述了这个Pass正面和背面的所有信息。我们提供了这个Pass需要显示的所有图片。最后需要一个清单文件manifest.json,它包含了所有这些文件的SHA1校验值,和一个分离的签名文件signature, 这样Passbook能够验证这个Pass在创建之后没有被修改过。
Pass Kit编程:实例:MyPass实例设计与说明
下面我们通过一个实例(MyPass)介绍一下Pass Kit的编程过程,MyPass实例设计原型草图。MyPass启动的时候,首页是表视图画面,它查询本地设备上的Passbook中特定一些Pass,然后然后显示的表视图画面中。用户点击“+”按钮,如果登机牌Pass存在则替换,否则添加登机牌Pass到Passbook,登机牌Pass是从iosbook3.com服务器请求下载的。如果在表视图画面点击其中的单元格,则画面跳转到Pass的详细画面,在详细画面中可以点击导航栏右上角的“Remove”按钮把当前Pass从Passbook中删除。
开始Passbook
1、创建App ID
任何一个iOS应用都需要创建App ID的,在Description项目中输入“Pass Kit Dev”,Bundle Seed ID (App ID Prefix)项目中选择“Use Team ID”。 Bundle Identifier (App ID Suffix)项目中输入“com.51work6.MyPass”。
创建成功获得App ID页面,在App ID列表中会发现我们刚刚创建的Pass Kit Dev
2、配置Pass可用
默认情况下创建的应用是不可以访问Passbook的,我们需要点击Configure超链接进入应用配置页面,勾选“Enable for Passes”开启Pass可用。
配置完成点击右下角的“Done”按钮,保存配置并回到App ID的列表页面,这时候再回来看一下我们刚刚配置的应用,它的Pass状态变为了绿色可用状态了。
3、创建配置概要文件
为了能够编写在设备上应用,我们还需要创建配置概要文件。创建成功之后下载配置概要文件到本地。
4、创建Pass类型ID
创建Pass类型ID也是重要的一个环节,我们需要设置的Pass类型ID是“pass.com.51work6.boarding-pass”。
5、配置Xcode工程代码签名
前面的工作完成之后,我们需要创建和配置Xcode工程,创建工程名“MyPass”应用,然后进行配置Xcode工程代码签名。这个签名需要使用第3个步骤创建配置概要文件。
选择TAGETS→MyPass→Code Signing Identity,在后面选择Pass Kit Dev Profile。
设置完成之后可以开始编码工作了。
6、配置Xcode工程配置授权信息
配置授权信息与iCloud应用类似,选择TAGETS→MyPass→Summary→Entitlements,我们可以在这里配置授权信息。
授权信息项目说明如下:
Entitlements :勾选Use Entitlements File,指定一个授权文件,这个文件没有会在你的工程目录中自己创建,它记录下面的授权详细配置信息的;
Pass:是选择Pass类型标识,先选择Use selected pass type identifier,然后勾选pass.com.51work6.boarding-pass;
到此为止,编程的前期准备过程就完成了,下面我们介绍实例的编写过程。
访问Passbook
对于Pass的操作是通过PKPassLibrary类完成的,PKPassLibrary类不是单例设计的,获得实例对象时候使用下面代码:
PKPassLibrary* passLib = [[PKPassLibrary alloc] init];
在PKPassLibrary类中与访问Passbook相关的方法有:
passes 获得Passbook中全部授权文件指定的Pass,我们在授权文件中指定的Pass类型ID是pass.com.51work6.boarding-pass,因此该方法取得的是Pass类型ID为pass.com.51work6.boarding-pass的所有Pass。
passWithPassTypeIdentifier:serialNumber: 通过指定的Pass类型ID和序列号获得Pass对象。
下面我们看看相关的程序代码,ViewController.h代码如下:
- #import <UIKit/UIKit.h>
- #import ”ASIHTTPRequest.h”
- #import ”PassKit/PassKit.h”
- #import ”DetailViewController.h”
- #define SerialNumber @”gT6zrHkaW”
- @interface ViewController :
- UITableViewController <PKAddPassesViewControllerDelegate>
- @property (strong, nonatomic) NSArray* passes;
- - (IBAction)add:(id)sender;
- @end
ViewController.m相关代码如下:
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- //判断Passbook是否可用
- if (![PKPassLibrary isPassLibraryAvailable])
- {
- NSLog(@”Passbook不可用。”);
- } else {
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(handleLibraryChange:)
- name:PKPassLibraryDidChangeNotification object:nil];
- }
- }
- -(void)viewWillAppear:(BOOL)animated
- {
- [super viewWillAppear:YES];
- //刷新画面
- [self handleLibraryChange:nil];
- }
- #pragma mark - 处理Passbook变化通知
- -(void)handleLibraryChange:(NSNotification*) not ④
- {
- PKPassLibrary* passLib = [[PKPassLibrary alloc] init];
- //排序
- NSSortDescriptor *byName = [NSSortDescriptor
- sortDescriptorWithKey:@"localizedName" ascending:YES];
- _passes = [[passLib passes] sortedArrayUsingDescriptors:@[byName]];
- [self.tableView reloadData];
- }
- - (void)didReceiveMemoryWarning
- {
- [super didReceiveMemoryWarning];
- [[NSNotificationCenter defaultCenter] removeAllObjects];
- }
发布Pass
Pass签名和压缩成功之后,如何把pkpass文件发布给用户使用呢?对于提供给普通用户pkpass文件,我们有3种发布方式:Email发布、Web网站发布和应用程序内发布。
Email发布
这种发布方式是pkpass文件作为Email附件发送给用户,用户最好在他的iPhone或iPod touch设备上打开邮箱读取Email。Email附件中的Pass,附件中的图标是在Pass中的logo.png文件。
当点击这个附件“Store Card”后页面会跳转,点击导航栏右边的“Add”按钮,会将这个Pass添加到Passbook中。
如果用户没有在它的iPhone或iPod touch中接收Email,可以在Mac OS X 10.8.2以上系统中,使用邮件应用程序接收这个邮件。
点击邮件中的“查看凭证…”按钮,会弹出添加Pass的对话框。
如果这个Pass没有添加到Passbook,右下角的按钮为“添加到Passbook”,如果已经添加到Passbook则这个按钮是“完成”或“更新”。
Passbook就到这里!更多Passbook内容可以参考我的新书《iOS网络编程与云端应用最佳实践》。
摘要: 转自关东升的博客Passbook是iOS 6的新功能,只能在iPhone和iPod touch设备中使用。它可以帮助我们管理商家发放的电子会员卡、积分卡、优惠券等。这将对未来电子商务产生深远的影响。商家通过发放会员卡、积分卡、优惠券等,提高与消费者的互动,吸引人们更多消费。Passbook的诞生,正是为了将所有这些“卡”和“券”电子化,存放在iPhone或iPod touch里。Passbook与PassiOS 6中的Passbook能够帮助我们集中管理电子“卡”和“券”,这些电子“卡”和“券”就是Pass,Passbook是这些Pass集合管理应用。Passbook与Pass关系,Passb阅读全文
摘要: 在2013年3月21日苹果已经通知开发者,从2013年5月1日起,访问UIDIDs的程序将不再被审核通过,替代的方案是开发者应该使用“在iOS 6中介绍的Vendor或Advertising标示符”。苹果已经警告过我们uniqueIdentifier将不能再使用了,并且提供了另外两个可选的。但是在程序中该选择使用哪个呢?本文不会回答这个问题,具体用哪个是由你来根据程序的目的来做决定的。下面我将列出iOS中目前支持的,以及被废弃的唯一标示符方法,并对其做出相应的解释,希望你看了以后针对唯一标示符的使用上,能够做出正确的确定。CFUUID从iOS2.0开始,CFUUID就已经出现了。它是CoreF阅读全文
摘要: 1.加文字-(UIImage*)addText:(UIImage*)imgtext:(NSString*)text1{//getimagewidthandheightintw=img.size.width;inth=img.size.height;CGColorSpaceRefcolorSpace=CGColorSpaceCreateDeviceRGB();//createagraphiccontextwithCGBitmapContextCreateCGContextRefcontext=CGBitmapContextCreate(NULL,w,h,8,4*w,colorSpace,kCGI阅读全文
摘要: 用户界面元素是现在的热门焦点,我们很多设计师的工作已经和它息息相关。那么,如何提高UI设计水平呢?这也是一个永恒的话题,值得探索、值得钻研。而今天要和您聊聊的是在用户界面组件中,存在与网站和移动应用程序的切换开关,是不是很有价值的话题呢?设计师通常试图优雅或吸引力的去设计各种形状、尺寸和主题来诠释自己对切换开关的理解。今天我们展示在下面的图片,都是附带psd源文件的,戳链接即可。这意味着,这些文件是完全可编辑的。你可以自由修改颜色或二次创新这些开关,直到在你的设计里看上去漂亮和谐。 这里有28个免费的PSD切换开关下载,就让这些切换开关替代那些过时的、无聊的复选框吧。你还在等什么呢?开始启程吧阅读全文
摘要: #define NavigationBar_HEIGHT 44 #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)#define SAFE_RELEASE(x) [x release];x=nil#define IOS_VERSION [[[UIDevice currentDevice] systemVersion] floatValue]#define CurrentSystemVersion阅读全文
摘要: 安装CocoaPods 安装RubyGemsCocoaPods需要ruby环境,幸运的是所有的mac电脑都已经预装了ruby,所以你需要更新一下你的RubyGems(如果你的系统版本低于OS X Lion)只需要输入如下命令就可以更新你的RubyGems:sudo gem update -–system 安装command line工具确保你在你的Xcode中安装了command line tool(命令行工具)。在最新的Mac OS X Lion和Xcode中,命令行工具默认没有安装。可以通过如下方式安装command line tool:从这里下载,然后安装打 开xcode,打开compo阅读全文
摘要: 步骤繁多,在此把开发步骤列表整理如下。因为只是步骤列表,所以并不含详细的说明教程,需要看教程的新手,可以看我附在最后的一些参考链接。配置Developer.apple.com登录到Developer.apple.com,然后进行以下步骤:1.为应用建立建立一个不带通配符的App ID2.用该App ID生成和安装相应的Provisioning Profile文件。配置iTunes Connect登录到iTunes Connet,然后进行以下步骤:1.用该App ID创建一个新的应用。2.在该应用中,创建应用内付费项目,选择付费类型,通常可选的是可重复消费(Consumable)的或是永久有效(阅读全文
摘要: 一:在app中添加检测版本号的代码: 调用查询最新版本号的web 服务, 拿到后与本地的版本号进行对比,如不一致则提示用户进行更新,用户确定更新后,运行类似以下的代码:?12345NSString *urlString = @"itms-services://?action=download-manifest&url=http://68.245.171.115:50352/apps/WirelessApp.plist";NSURL *url = [NSURL URLWithString:urlString];[[UIApplication sharedApplica阅读全文
摘要: 下面是把app放到web site,让其他人通过Over the Air (OTA)下载安装的步骤。前提: 能安装app的device需要被包含在你的provisioning profile里Environment: iOS 5.0 + xcode 4.3ref link: https://help.apple.com/iosdeployment-apps/?lang=en-us#app43ad871eStep 1 在你的project里,选择"iOS Device" in the active scheme (如果选择的是iPad simulator or iPhone 阅读全文
摘要: 如果你是一位设计师或开发人员/程序员,准备步入iOS开发,那这里收集了你需要的工具。本文并不涵盖iOS教程,只偏重线框图工具和视图资源。1. Sketch Pad 素描垫就我个人而言,我更喜欢用纸笔来画图。可以很快添加、修改和擦除。如果你也偏爱手绘,那下面这个素描垫合集对你很有用了。①iPhone Wireframe Templates for SketchingInteractive Logic 出的素描垫。有两种布局,各自又有两个格式:PDF 和 Viso (VSD)。②iPhone Idea Sheet③iPhone Application Sketch Template带网格的 iPh阅读全文
摘要: iOS Developer通常需要用到 developer.apple.com 和 itunesconnect.apple.com 这两个工具,就如同名字表现出来的,前者是开发者资源站,包括文档,工具,社区都在那里。后者是管理自己App的工具。本文提到的内容主要和iTunes Connect有关。一些建议阅读的文档:都能在developer.apple.com里面找到iTuns Conncet使用指南:iTunes Connect Developer Guide 7.2App Store审核指南(很短,必读):App Store Review Guidelines关于帐号语言第一次在App S阅读全文
摘要: 移动产品大家都不会陌生,几乎是无所不能,可以随时随地满足用户的多种需求。那么移动产品设计呢?有没有遇到类似的情况,PM小A说:产品要增加功能,在界面上加个入口,小意思嘛。小B说:内容太少了,咱们再扩展一下页面,没有难度嘛。小C说:能不能挤一挤多放个功能?用户真的有需求…可界面的空间是有限的,内容需求却是无限的,从3.5寸到5.2寸到9.7寸的pad,不管多大尺寸的屏幕,都逃脱不了这样的命运。就像房屋的空间和放在里面的东西,永远存在东西放不下的问题。既然是同类的问题,能不能从相同的角度出发来找到解决方案呢?在建筑学中,空间主要指视觉层面感受到的几何学意义的三维物理空间,也就是空间中的人对环境的一阅读全文
摘要: 都说好的交互设计的评判标准之一是“别让我等”,但互联网产品总是受制于实际的网络问题。移动端产品则更为明显,2G、3G环境下加载不够给力,wifi环境也未必每次都是那么顺利。因此“别让我等”更像是种奢望,我们倒应该思考的是“如何优雅而不令人烦躁的等”。与之最直接关联的就是app加载页面的设计。 一个app加载页面,大致分为3类:(一)启动加载页启动加载是我们打开app的第一眼所看到界面。会给用户留下该产品的第一印象。 通常启动加载页设计有几种: 1、固定的加载页Logo、slogan、产品主色、版本号、出品团队,这是初级启动页面的基本构成元素,设计者的目的就是最直接快速的向用户传达产品形象,这.阅读全文
摘要: "CFBundleDisplayName~iphone" = "iPhoneName"; "CFBundleDisplayName~ipad" = "iPadNameLong";阅读全文
摘要: Apache Licence 2.0Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和BSD类似:需要给代码的用户一份Apache Licence如果你修改了代码,需要在被修改的文件中说明。在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但阅读全文
摘要: 苹果对开发者提交的应用的审核之严格是出了名的,了解苹果的审核标准对于开发者防止应用被拒有着十分重要的意义。几天前苹果官方公布了 App Store 审核指南,后经译言网翻译成了中文,现全文转发,供大家参考。前言 感谢您付出宝贵的才华与时间来开发iOS应用程程序。从职业与报酬的角度而言,这对于成千上万的开发员来说一直都是一项值得投入的 事业。我们希望帮助您加入这个成功的组织。这是我们首次发布《应用程序商店评估指导》(App Store Review Guidelines)。通过它,我们希望帮助您解决开发应用程序时遇到的问题,以便于您在提交应用程序时,可以加快审批流程的速度。 我们将应用程序(..阅读全文
摘要: 1.Resizer:将Retina使用的图档(档名为@2x或-hd的图档)快速且完美地产生普通屏幕的图档尺寸。2.LifeView:透过Wifi使用iPhone或是iPad直接预览电脑画面,方便检视图片在Retina屏幕中的效果。3.IconViewer:线上快速预览你精心製作的App显示Icon。4.FreeRuler:快速简单的屏幕量测工具。5.PieceableViewer:将你写好的iOSApp上传至网络云端,其他人可以透过浏览器直接预览试用。6.Zwoptex(MacOS):方便的连续动画图档制作工具,快速输出合并图档以及资讯清单(.plist)档案。7.SpeedLimit:在模拟阅读全文
摘要: 大部分用户似乎很欣赏变长的iPhone5,但app开发者却遭遇到了挑战,你是如何为不同尺寸的iPhone创建背景呢?1.完全不同的艺术风格如果你的背景有大量插图或者需要精确尺寸(比如游戏里会需要边框或者场景),你就需要制作两个不同尺寸的背景来应对两个不同的屏幕。优点:最佳定制。可以创建一副有插画的场景或是一些纹理丰富的元素。缺点:占用内存多。需求增多,而这对设计者来说意味着更多成本。2.单独的长背景大部分app开发者使用适用iPhone5的单独背景。优点:可以自己定制背景,而不仅仅是以下几种选择比起两个单独的图片,这个方法占用的内存少缺点:部分图片不会显示在iPhone视网膜显示屏上(对app阅读全文
摘要: Clear的出现引起了大家对手势操作的热忱,Google新专利采用“连续手势”也让我们看到了个性化手势的前景。确实,手势操作能够减少界面元素,提升效率;但其不可见性,抽象性,需记忆性等特点也决定了它的弊端。如何扬长避短,根据现有手势的特点在合适的情境中使用,同时根据文化约定、实物隐喻、表音、表意等发想创新手势,而非一味地追逐跟风,值得我们思考。本文结合了珊璞之前对客户端手势应用的分享以及网上的相关资料,从手势的空间感带来的心理感受,手势赋予的功能,引导方式,与动画的配合,创新几个角度进行了总结。许多是大家已知的想法,在这里仅做简单的梳理;而引导方式、与动画的配合等,希望大家能有更多的思考,因为阅读全文
摘要: iOS 6 is another exciting OS update from Apple that introduces a lot of cool new stuff you’ll want to use in your apps, like Auto Layout, Collection Views, and Passbook. We have a bunch of tutorials covering these new APIs below!If you like these tutorials, check out our massive 1,500 page book iOS 阅读全文
摘要: NSString *className = NSStringFromClass([UIView class]);const char *cClassName = [className UTF8String];id theClass = objc_getClass(cClassName);unsigned int outCount;Method *m =class_copyMethodList(theClass,&outCount);NSLog(@"%d",outCount);for (int i = 0; i<outCount; i++) {SEL a = m阅读全文
摘要: 首先导入CoreText.framework,并在需要使用的文件中导入:#import<CoreText/CoreText.h>创建一个NSMutableAttributedString:NSMutableAttributedString*attriString=[[[NSMutableAttributedStringalloc]initWithString:@"thisistest!"]autorelease];非常常规的创建方式,接下来我们给它配置属性://把this的字体颜色变为红色[attriStringaddAttribute:(NSString*)k阅读全文
摘要: [1] 、加入头文件#include <sys/sysctl.h>[2]、添加类,实现- (NSString *) platform{ size_t size; sysctlbyname("hw.machine", NULL, &size, NULL, 0); char *machine = malloc(size); sysctlbyname("hw.machine", machine, &size, NULL, 0); NSString*platform = [NSStringstringWithCString:machi阅读全文
摘要: CABasicAnimation animationWithKeyPath TypesWhen using the ‘CABasicAnimation’ from the QuartzCore Framework in Objective-C, you have to specify an animationWithKeyPath.This is a long string and is not easily listed in the CABasicAnimation, CAPropertyAnimation, or the CAAnimation class.I ended up find阅读全文
摘要: 截取本区域(self.view):UIGraphicsBeginImageContext(CGSizeMake(self.view.frame.size.width, self.view.frame.size.height));[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();UIImageWriteToSavedPhotosAlbu阅读全文
摘要: 一. 如何获取SQLite最新版本官方站点:http://www.sqlite.org/从http://www.sqlite.org/网站的Download页面获取即如下页面下载http://www.sqlite.org/download.htmlhttp://blog.csdn.net/littletigerat二.Windows下的SQLite的源代码是哪个软件压缩包?sqlite-amalgamation-3_6_22.zip是SQLite的windows下源码文件三.Window下的SQLite命令行工具sqlite-3_6_22.zip四.Window下的SQLite开发库,即动态链阅读全文
摘要: 原文链接地址:http://www.raywenderlich.com/2797/introduction-to-in-app-purchases教程截图: 成为ios开发者最大的好处就是,你编写的应用程序会有很多方式可以赚钱。比如,收费版,免费挂广告版,还有就是程序内置购买。 程序内置购买会让你爱不释手,主要有以下原因:除了程序本身的下载收费以外,你还可以赚更多的钱。一些用户愿意为那些额外的功能花费大量的金钱。你可以免费发布你的程序(这样的话,用户就可以任意下载了),如果他们喜欢这个程序的话,那么就会有人愿意购买额外功能。在你做完一个程序的时候,你可以在以后的发布版中添加更多的功能,然后..阅读全文
摘要: IOS SDK中提供了一个现成的函数 NSSetUncaughtExceptionHandler 用来做异常处理,但功能非常有限,而引起崩溃的大多数原因如:内存访问错误,重复释放等错误就无能为力了,因为这种错误它抛出的是Signal,所以必须要专门做Signal处理。在didFinishLaunchingWithOptions 中,加入代码如下:Source codesignal(SIGABRT, MySignalHandler);signal(SIGILL, MySignalHandler);signal(SIGSEGV, MySignalHandler);signal(SIGFPE, My阅读全文
摘要: 在 iOS 里,程序之间都是相互隔离,目前并没有一个有效的方式来做程序间通信,幸好 iOS 程序可以很方便的注册自己的 URL Scheme,这样就可以通过打开特定 URL 的方式来传递参数给另外一个程序。例如在 iPad 上浏览网页,并且 iPad 已经安装了 淘宝 HD,那么就打开下面这个链接就会在淘宝 HD 中查看这个商品的详细信息,也可以方便的使用淘宝 HD 进行购买、收藏等操作。在淘宝 HD 中查看商品“2012西藏卓明谷方舟登舰卡(船票)”当然,如果你在 Mac OS X 中打开这个链接,或者在没有安装 淘宝 HD 的 iPad 中打开这个链接,会提示没有程序来打开这个链接。配置要阅读全文
摘要: ABAddressBookRef addressBook = ABAddressBookCreate();CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(addressBook);for(int i = 0; i < CFArrayGetCount(results); i++){ABRecordRef person = CFArrayGetValueAtIndex(results, i);//读取firstnameNSString *personName = (NSString*)ABRecordCopyValue(perso阅读全文
摘要: 在开发项目的过程,很多情况下我们需要利用互联网上的一些数据,在这种情况下,我们可能要写一个爬虫来爬我们所需要的数据。一般情况下都是利用正则表达式来匹配Html,获取我们所需要的数据。一般情况下分以下三步。1、获取网页的html2、利用正则表达式,获取我们所需要的数据3、分析,使用获取到的数据,(例如,保存到数据库)接下来我们分析代码:1、获取网页的html 对于一些网页,不需要提交Post提交数据时,我们可以简单的利用NSURL类来获取我们所需要的html,交将其转换中kCFStringEncodingGB_18030_2000格式,解决中文乱码问题。 +(NSString*) urlst..阅读全文
摘要: Framework 简介Mac OS X 扩展了 framework 的功能,让我们能够利用它来共享代码和资源。framework 在概念上有点像 Window 下的库,但是比库更加强大,通过 framework 我们可以共享所有形式的资源,如动态共享库,nib 文件,图像字符资源以及文档等。系统会在需要的时候将 framework 载入内存中,多个应用程序可以同时使用同一个 framework,而内存中的拷贝只有一份。一个 framework 同时也是一个 bundle,我们可以在 finder 里浏览其内容,也可以在代码中通过 NSBundle 访问它。利用 framework 我们可以实阅读全文
摘要: XCode 内置了 OCUnit 单元测试框架,但目前最好用的测试框架应该是 GHUnit。通过 GHUnit + OCMock 组合,我们可以在 iOS 下进行较强大的单元测试功能。本文将演示如何在 XCode 4.2 下使用 OCUnit, GHUnit 和 OCMock 进行单元测试。OCUnit在 XCode 下新建一个 OCUnitProject 工程,选中 Include Unit Tests 选择框,OCUnit 框架则会为我们自动添加 Unit Test 框架代码:XCode 在 OCUnitProjectTests.m 中为我们自动生成了一个 Fail 的测试:[cpp] v阅读全文
摘要: 从 NSDictionary 取值的时候有两个方法,objectForKey: 和 valueForKey:,这两个方法具体有什么不同呢?先从 NSDictionary 文档中来看这两个方法的定义:objectForKey: returns the value associated with aKey, or nil if no value is associated with aKey. 返回指定 key 的 value,若没有这个 key 返回 nil.valueForKey: returns the value associated with a given key. 同样是返回指定 k阅读全文
摘要: 在使用诸如NSLog, [NSString stringWithFormat:]之类的函数时,都是基于c/c++风格的字符串格式化工作的.本来c/c++就没怎么用过,到iphone开发开发时掺合上NS系的对象,格式化输出更是一头的乱.看了一下Programming Guide for Cocoa的文档,还是有比较详尽的说明的,整理出来备查.格式定义The format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IEEE printf s阅读全文
摘要: 首选“Compile Sources”的位置:选中工程->TARGETS->相应的target然后选中右侧的“Build Phases”,向下就找到“Compile Sources”了。如何在未使用arc的工程中引入一个使用了arc特性的文件:对相应的文件添加:-fobjc-arc参数如何在arc工程中引用未使用arc的文件:对相应的文件添加:-fno-objc-arc参数http://blog.cnrainbird.com/index.php/2012/03/13/object-c_kai_fa_zhong_hun_he_shi_yong_huo_bu_shi_yong_arc/阅读全文
摘要: //得到当前日期 CFAbsoluteTime currTime=CFAbsoluteTimeGetCurrent(); CFGregorianDate currenttDate=CFAbsoluteTimeGetGregorianDate(currTime,CFTimeZoneCopyDefault()); //得到要提醒的日期 CFGregorianDate clockDate=CFAbsoluteTimeGetGregorianDate(currTime, CFTimeZoneCopyDefault()); clockDate.hour=5; clockDate.minute=10; c阅读全文
摘要: 该系列文章转载自:http://www.dreamingwish.com/Dispatch Queue挂起dispatch queue可以被挂起和恢复。使用 dispatch_suspend函数来挂起,使用 dispatch_resume 函数来恢复。这两个函数的行为是如你所愿的。另外,这两个还是也可以用于dispatch source。一个要注意的地方是,dispatch queue的挂起是block粒度的。换句话说,挂起一个queue并不会将当前正在执行的block挂起。它会允许当前执行的block执行完毕,然后后续的block不再会被执行,直至queue被恢复。还有一个注意点:从man页阅读全文
摘要: 该系列文章转载自:http://www.dreamingwish.com/何为Dispatch Sources简单来说,dispatch source是一个监视某些类型事件的对象。当这些事件发生时,它自动将一个block放入一个dispatch queue的执行例程中。说的貌似有点不清不楚。我们到底讨论哪些事件类型?下面是GCD 10.6.0版本支持的事件:Mach port send right state changes.Mach port receive right state changes.External process state change.File descriptor r阅读全文
摘要: 该系列文章转载自:http://www.dreamingwish.com/概念为了在单一进程中充分发挥多核的优势,我们有必要使用多线程技术(我们没必要去提多进程,这玩意儿和GCD没关系)。在低层,GCD全局dispatch queue仅仅是工作线程池的抽象。这些队列中的Block一旦可用,就会被dispatch到工作线程中。提交至用户队列的Block最终也会通过全局队列进入相同的工作线程池(除非你的用户队列的目标是主线程,但是为了提高运行速度,我们绝不会这么干)。有两种途径来通过GCD“榨取”多核心系统的性能:将单一任务或者一组相关任务并发至全局队列中运算;将多个不相关的任务或者关联不紧密的任阅读全文
摘要: 该系列文章转载自:http://www.dreamingwish.com/什么是GCD?Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写。从基本功能上讲,GCD有点像NSOperationQueue,他们都允许程序将任务切分为多个单一任务然后提交至工作队列来并发地或者串行地执行。GCD比之NSOpertionQueue更底层更高效,并且它不是Cocoa框架的一部分。除了代码的平行执行能力,GCD还提供高度集成的事件控制系统。可以设置句柄来响应文件描述符、mach ports(Mach port 用于 OS X上的进程间通讯)、进程、阅读全文
摘要: 在cocoa application的应用中,我们有时会使用Core Foundation(CF),我们经常会在Objective-C和CF之间进行转化。系统使用arc的状态下,编译器不能自动管理CF的内存,这时候你必须使用CFRetain和CFRelease来进行CF的内存的管理。具体的CF内存管理规则见: Memory Management Programming Guide for Core Foundation在OC和FC之间进行转化的时候,主要是对象的归属问题。共有两种方式:1、使用宏,可以标识归属者从OC到CF,还是从CF到OC。NS_INLINE CFTypeRef CFBrid阅读全文
摘要: app store申请app store为开发者提供四种类型的申请:个人ios开发者计划$99/年公司ios开发者计划$99/年企业ios开发者计划$299/年高校ios开发者计划免费在这里主要介绍一下公司ios开发者计划,只有利用个人和公司ios开发者计划证书开发的应用,才能上app store。企业开发者计划主要是为本公司开发软件,并安装到本公司的硬件设备上,不能上app store。下面主要介绍一下公司ios开发者计划的申请.申请帐号:打开连接:http://developer.apple.com/programs/which-program/选择公司ios开发者计划3.单击“Enrol阅读全文
摘要: //!随机数的最大值#define ARC4RANDOM_MAX0x100000000+ (NSInteger)createRandomsizeValueInt:(NSInteger)fromInt toInt:(NSInteger)toInt{if (toInt < fromInt){return toInt;}if (toInt == fromInt){return fromInt;}NSInteger randVal =arc4random() % (toInt - fromInt + 1) + fromInt;return randVal;}+ (double)createRan阅读全文
摘要: #import <Foundation/Foundation.h>#import "FMDatabase.h"#import "FMDatabaseAdditions.h"@interface wiDBRoot : NSObject@property (retain, nonatomic) FMDatabase *DB;@property (retain, nonatomic) NSString *DBName;//+ (id)modelWithDBName:(NSString *)dbName;- (id)initWithDBName:(N阅读全文
摘要: //可通过苹果review+ (NSString*)getDeviceVersion{size_t size;sysctlbyname("hw.machine", NULL, &size, NULL, 0);char *machine = (char*)malloc(size);sysctlbyname("hw.machine", machine, &size, NULL, 0);NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEn阅读全文
摘要: XCode 默认支持 Git 作为代码仓库,当我们新建一个仓库的时候,可以勾选创建默认仓库,只不过这个仓库是在本地的。本文介绍如何在 mac 机器上创建 Git 服务器,总体思路是:使用 gitosis 来简化创建过程,在用作服务器的机器上创建一个名为 git 的账户来创建 git 服务器,其他客户端通过 ssh 机制访问 git 服务器。 本文文档:点此下载 一,创建 git 账户 1,在用作服务器的机器 Server 上创建 git 账户。我们可以通过 System Preferences->accounts 来添加。在这里我添加一个 git 的 administrator 账户,a阅读全文
摘要: Introducing the iOS 5 FeastUser Interface Customization in iOS 5Beginning Storyboards in iOS 5 Part 1Beginning Storyboards in iOS 5 Part 2Beginning Turn-Based Gaming with iOS 5 Part 1Beginning Turn-Based Gaming with iOS 5 Part 2Working with JSON in iOS 5Beginning iCloud in iOS 5 Tutorial Part 1Begin阅读全文
摘要: 很多时候我们的程序操作结构都是UITabBarController+UINavigationController,每个 UITabBarController item里面都有很多层的UINavigationController,而UITabBarController默认有一个事件就是双击 UITabBarController item时,会把这个item里的UINavigationController pop 到root,而我们有时不希望一下子就pop到了根视图,因为可能还会有一些逐层处理功能需要完成。这个时候如果想屏闭掉这个双击事件只留下单击切换标签 事件的话,就可以参考下面的方法重写UIT阅读全文
摘要: C函数要在程序中用到以下这些宏:void va_start( va_list arg_ptr, prev_param );type va_arg( va_list arg_ptr, type );void va_end( va_list arg_ptr );va在这里是variable-argument(可变参数)的意思.这些宏定义在stdarg.h中,所以用到可变参数的程序应该包含这个头文件.下面我们写一个简单的可变参数的函数,改函数至少有一个整数参数,第二个参数也是整数,是可选的.函数只是打印这两个参数的值.void simple_va_fun(int i, ...){va_list ar阅读全文
摘要: typedefenum { UIBarButtonSystemItemDone, UIBarButtonSystemItemCancel, UIBarButtonSystemItemEdit, UIBarButtonSystemItemSave, UIBarButtonSystemItemAdd, UIBarButtonSystemItemFlexibleSpace, UIBarButtonSystemItemFixedSpace, UIBarButtonSystemItemCompose, UIBarButtonSystemItemReply, UIBarButton...阅读全文
摘要: #define kDocuments [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]BOOL isCreate = [[NSFileManager defaultManager] createDirectoryAtPath:[kDocuments stringByAppendingPathComponent:@"Event1"] withIntermediateDirectories:YES attributes:nil error:nil];[[NSFileMana...阅读全文
摘要: With the iOs SDK 4 now public and the advent of iAds just a few days away, I thought we’d celebrate with a tutorial on how to integrate iAd into your iPhone app!In this tutorial, not only will we show you how to get started with iAd, but we’ll also show you how to deal with some complex issues you m阅读全文
摘要: Of all of the ways to persist data on the iPhone, Core Data is the best one to use for non-trivial data storage. It can reduce the memory overhead of your app, increase responsiveness, and save you from writing a lot of boilerplate code.However, the learning curve for Core Data can be quite large. T阅读全文
摘要: 0CGContextRef context = UIGraphicsGetCurrentContext(); 设置上下文1 CGContextMoveToPoint 开始画线2 CGContextAddLineToPoint 画直线4 CGContextAddEllipseInRect 画一椭圆4 CGContextSetLineCap 设置线条终点形状4 CGContextSetLineDash 画虚线4 CGContextAddRect 画一方框4 CGContextStrokeRect 指定矩形4 CGContextStrokeRectWithWidth 指定矩形线宽度4 CGConte阅读全文
摘要: 官方地址:iOS App Programming Guide ->iCloud StorageiCloud支持两种应用存储:document storage:存储用户文档和应用数据到用户的iCloud账户key-value data storage:分享小量的非关键配置数据到应用的多个实例iCloud App的设计考虑首先需要确认的是采用document storage还是key-value data storage。document storage用于存储应用数据,要么是应用创建并私有管理的数据,要么是用户创建的数据。所有用户面对的数据都应该是document storage,例如用户阅读全文
摘要: 1. 起步1.1 - 关于版本控制1.2 - Git 简史1.3 - Git 基础1.4 - 安装 Git1.5 - 初次运行 Git 前的配置1.6 - 获取帮助1.7 - 小结2. Git 基础2.1 - 取得项目的 Git 仓库2.2 - 记录每次更新到仓库2.3 - 查看提交历史2.4 - 撤消操作2.5 - 远程仓库的使用2.6 - 打标签2.7 - 技巧和窍门2.8 - 小结3. Git 分支3.1 - 何谓分支3.2 - 分支的新建与合并3.3 - 分支的管理3.4 - 利用分支进行开发的工作流程3.5 - 远程分支3.6 - 分支的衍合3.7 - 小结4. 服务器上的 Git4阅读全文
摘要: 1. NSData 与 NSStringNSData-> NSStringNSString*aString = [[NSStringalloc]initWithData:adataencoding:NSUTF8StringEncoding];NSString->NSDataNSString*aString =@"1234abcd";NSData*aData = [aStringdataUsingEncoding:NSUTF8StringEncoding];2.NSData与ByteNSData-> Byte数组NSString*testString =@&阅读全文
摘要: #import <UIKit/UIKit.h>@interface UIView (Image)- (UIImage *) imageByRenderingView;@end#import "UIView+Image.h"#include <QuartzCore/QuartzCore.h>@implementation UIView (Image)- (UIImage *)imageByRenderingView{ UIGraphicsBeginImageContext(self.bounds.size); [self.layer renderInC阅读全文
摘要: Introducing SeguesIt’s time to add more view controllers to our storyboard. We’re going to create a screen that allows users to add new players to the app.Drag a Bar Button Item into the right slot of the navigation bar on the Players screen. In the Attributes Inspector change its Identifier to Add 阅读全文
摘要: Storyboarding is an exciting new feature in iOS 5 that will save you a lot of time building user interfaces for your apps. To show you what a storyboard is, I’ll let a picture do the talking. This is the storyboard that we will be building in this tutorial:You may not know exactly yet what the app d阅读全文
摘要: iOS4引入了一个新特性,支持代码块的使用, 这将从根本上改变你的编程方式。代码块是对C语言的一个扩展,因此在Objective-C中完全支持。如果你学过Ruby,Python或Lisp编程 语言,那么你肯定知道代码块的强大之处。简单的说,你可以通过代码块封装一组代码语句并将其当作一个对象。代码块的使用是一种新的编码风格,可以让你运用 自如的使用iOS4中新增API。我们先来看两个在iOS4中使用代码块的例子(你很有可能已经见过):view animations 和enumeration使用代码块的例子 第一个例子,假设我们创建一个纸牌游戏,需要展现纸牌被派发到玩家面前的动画效果。幸运的是通过阅读全文
摘要: 这套教程作为初学OpneGL ES的入门教程是相当不错的,推荐给大家 OpenGL ES 从零开始系列 之一 – 基本概念OpenGL ES 从零开始系列 之二 – 简单绘图概述OpenGL ES 从零开始系列 之三 – 透视OpenGL ES 从零开始系列 之四 – 光效OpenGL ES 从零开始系列 之五 – 材质OpenGL ES 从零开始系列 之六 – 纹理及纹理映射OpenGL ES 从零开始系列 之七 – 变换和矩阵OpenGL ES从零开始系列之四补遗 – setupView重写OpenGL ES 从零开始系列08:交叉存取顶点数据OpenGL ES 从零开始系列9a:动画基础阅读全文
摘要: 在 xcode4中,为了将一些比较独立的功能封装起来,或者多人同时开发时,需要将程序打包成静态库,但在xcode4中设置工作区、工程和静态库等遇到了 一系列问题,不知道是不是xcode的高版本中已经解决了这些问题?我用的是xcode4.0(4A304a), SDK是4.3。从网上能够查到的写的比较全面的使用和建立静态库的文章是CarbonFive的这篇文章。但我按照这个文章逐个试验后,发现几个地方跑不通,经过一番尝试,终于在我的机器上把详细的设置步骤跑通了。xcode4中的几个基本概念工作区(Workspace):在xcode4中引入了这个概念,能够把project统一管理起来,这功能在Vis阅读全文
摘要: 转自cocoachina:http://www.cocoachina.com/bbs/read.php?tid=8466&keyword=%BE%B2%CC%AC%C0%E0%BF%E2(一)制作静态类库• ❑ 为方便讲解,更方便与初期代码测试,新建一个项目,StaticLibraryExample• ❑ 新建Target。 假设我们需要制作的静态类库名为 IMIBase. 右击Targets,添加新Target。选择Static Library, 名字为IMIBase • ❑ 添加类文件到IMIBase。在新建文件选项中注意,添加到的Target是IMIBase,而不是默认的Stat阅读全文
摘要: 在ios4之后,引入了代码块的特性,在gcd中会经常的用到,所以决定好好的看看代码块文档,把这块总结一下。从头开始讲解代码块。1.声明和使用代码块一般用^操作符声明一个块变量,并作为块的开始符。而块的本身用{}包括起来,就像下面那样。int multiplier = 7;int (^myBlock)(int) = ^(int num) { return num * multiplier;}; 其实意思就是前半句声明了一个名字为myBlock的代码块,有一个int类型的参数,并返回一个int类型的值;后面的半句就是一个块的定义,然后赋值给myBlock。如果我们像上面那样,声明一个块像一...阅读全文
摘要: OS5新增了JSON解析的API,我们将其和其他五个开源的JSON解析库进行了解析速度的测试,下面是测试的结果和工程代码附件。我们选择的测试对象包含下面的这几个框架,其中NSJSONSerialization是iOS5系统新增的JSON解析的API,需要iOS5的环境,如果您在更低的版本进行测试,应该屏蔽相应的代码调用。- [SBJSON (json-framework)](http://code.google.com/p/json-framework/)- [TouchJSON (from touchcode)](http://code.google.com/p/touchcode/)- [阅读全文
摘要: 管iPhone不允许同时运行两个应用程序,我们可以从自己的应用程序中启动另一个应用程序,并且可以在应用程序之间共享数据。我们可以使用UIApplication类的openURL:方法从一个应用程序来启动另一个应用程序。例如,要在Safari应用程序中打开Google主页,我们可以编写如下代码:NSURL*url=[NSURLURLWithString:@"http://google.com"]; [[UIApplicationsharedApplication] openURL:url]; 这里的http://部分叫做URL方案(URL scheme),它表示想要载入的应用阅读全文
摘要: UIApplication 是iPhone应用程序的开始并且负责初始化并显示UIWindow,并负责加载应用程序的第一个UIView到UIWindow窗体中。 UIApplication的另一个任务是帮助管理应用程序的生命周期,而UIApplication通过一个名字为 UIApplicationDelegate的代理类来履行这个任务。尽管UIApplication会负责接收事件,而 UIApplicationDelegate则决定应用程序如何去响应这些事件,UIApplicationDelegate可以处理的事件包括应用程序 的生命周期事件(比如程序启动和关闭)、系统事件(比如来电、记事项警阅读全文
摘要: Automatic Reference Counting (ARC) 是一个编译期的技术,利用此技术可以简化Objective-C编程在内存管理方面的工作量。这里我把此技术翻译为自动内存计数器管理技术,下图是使用和不使用此技术的Objective-C代码的区别。 ARC技术是随着XCode4.2一起发布的,在缺省工程模板中,你可以指定你的工程是否支持ARC技术,如果你不指定工程支持ARC技术,在代码中你必须使用管理内存的代码来管理内存。概述自动计数(ARC)是一个编译期间工作的能够帮你管理内存的技术,通过它,程序人员可以不需要在内存的retain,释放等方面花费精力。ARC在编译期间为每个Ob阅读全文
摘要: CGContextAddArc是一个比较强大的函数,建议仔细看一下iphone的开发文档。CGContextAddArc(CGContextRefc,CGFloatx,CGFloaty,CGFloatradius,CGFloatstartAngle,CGFloatendAngle,intclockwise)CGContextRef: 图形上下文x,y: 开始画的坐标radius: 半径startAngle, endAngle: 开始的弧度,结束的弧度clockwise: 画的方向(顺时针,逆时针)1<pre class="brush:objc">GraphVie阅读全文
摘要: 如何用Facebook graphic api上传视频:http://developers.facebook.com/blog/post/532/Keychain保存数据封装:https://github.com/carlbrown/PDKeychainBindingsController对焦功能的实现:http://www.clingmarks.com/?p=612自定义圆角Switch按件:https://github.com/domesticcatsoftware/DCRoundSwitch弹出窗口For iphone and ipad:https://github.com/chrism阅读全文
摘要: Leaves是由Tow Brow开发的一个简单的图书翻页控件,它巧妙地结合了镜像层、阴影层(用于半透明页)和渐变层(用于阴影)来实现图书的翻页效果。其翻页效果如下图所示: 特性 Leaves支持: 文本、图像、PDF等任何可被渲染到Graphics Context上的对象 通过拖动或点击来翻页 支持ipad和iphone大小的显示区域 Levels目前不支持以下特性 页面上的交互元素 轻扫动作类和接口 Leaves中主要有三个类:LevelsView、LevelsViewController、LevelsCache: LevelsCache:是一个辅助类,用于缓存显示页。它将显示的内容缓存为图阅读全文
摘要: 应用程序中出现的文字统称为文本,根据作用的不同可以分为标题、控件标签、补充说明、错误信息和运营文本等。文字信息是最基础的交互元素,如早期的 命令行界面,用户依靠阅读和写字符与计算机交互,大量的字符需要用户记忆,图形界面增加了直观的图形交互,降低了学习成本,但文字本身传递意义最为准确, 复杂的信息还是以文字描述为主,所以在界面设计中依旧重要,易于理解的文本可以提供用户的操作效率。 简洁 简洁就是使用最少的文字传达最准确的信息,不重复、不啰嗦,能用三个字表达清楚就不用五个字,比如标题文字“通讯录”比“我的通讯录”简洁,手机是比较私人化的产品,一般不存在多人共用的情景。 比如标题“搜索界面”和“类别阅读全文
摘要: iPhone支持unicodeemoji字符集缘故。NSString*s=@"Thisisasmiley\ue415face";testFace.text=s;上面的/ue415就是表情编码。更多的表情如下: /ue415 /ue056 /ue057 /ue414 /ue405 /ue106 /ue418 /ue417 /ue40d /ue40a /ue404 /ue105 /ue409 /ue40e /ue402 /ue108 /ue403 /ue058 /ue407 /ue401 /ue40f /ue40b /ue406 /ue413 /ue411 /ue412 /ue阅读全文
摘要: iPad如今风靡全球,移动开发者也趋之若鹜,本文搜集了24款免费的iPad应用的用户界面开发工具,以帮助开发者提高开发效率。 1. iPad GUI PSD2. iPad PSD格式的GUI工具3. 手势矢量图4. iPad GUI矢量元素5. iPad GUI PSD – 26. ipad 部件模型7. iPad Omnigraffle模板8. iPad 图标PSD模板9. iPad字体10. iPad 线框模型11. iPad 和 iPhone 设计12. AI格式的iPad草图元素13. 完全可编辑的PSD14. 触摸手势15. iPad PSD16. i...阅读全文
摘要: [UIApplication sharedApplication].idleTimerDisabled=YES;不自动锁屏[UIApplication sharedApplication].idleTimerDisabled=NO;自动锁屏阅读全文
摘要: 第一部分:UITextField Demo: http://www.supersuraccoon.byethost7.com/?p=200 Shake Detect Demo: http://www.supersuraccoon.byethost7.com/?p=196 Save&&Load data Demo: http://www.supersuraccoon.byethost7.com/?p=193 RateApp Demo: http://www.supersuraccoon.byethost7.com/?p=190 NSSort Demo: http://www.su阅读全文
摘要: 打开终端,输入:sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts就可以用文本编辑来直观修改hosts了阅读全文
摘要: webview.backgroundColor = [UIColor clearColor];webview.opaque = NO;在HTML里设置:<body style="background-color: transparent">阅读全文
摘要: iPhone的出现带出了前所未见的变革,应用开发社群圈内圈外的人均参与其中。但是对那些处于开发世界之外的群体而言,这个过程仍然充满神秘感。这个教程将指导你逐步把iPhone应用想法变成现实。如果你计划制作自己的首款iPhone应用的话,这篇文章将为你提供可能会用到的各种想法、技术、技巧和资源 1、产生想法——优秀的想法你要如何知道想法是否优秀呢?第一步,先考虑你的想法是否有内涵;第二部,想法是否含有至少一个的成功要素,包括以下几个方面:应用能否帮助用户解决某个独特的问题?在电灯泡发明之前,有人大加抱怨在烛光下看书很不方便。你需要知道用户存在何种问题,应用要如何让用户的生活变得更为舒适。应用是否阅读全文
摘要: XCode新建文件后,头部会有开发人员名称,公司名称等信息// Created by Deger on 11-5-24.// Copyright 2011 __MyCompanyName__. All rights reserved.要修改这两个名称可通过在terminal中运行defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions '{"ORGANIZATIONNAME" = "My Company";}'defaults write com.apple.Xcod阅读全文
摘要: 定义了几个方法,获取iphone的IP地址。IPAdress.hview plain#defineMAXADDRS32externchar*if_names[MAXADDRS];externchar*ip_names[MAXADDRS];externchar*hw_addrs[MAXADDRS];externunsignedlongip_addrs[MAXADDRS];//FunctionprototypesvoidInitAddresses();voidFreeAddresses();voidGetIPAddresses();voidGetHWAddresses();IPAddress.cv阅读全文
摘要: 这个类可以用来检测用户是否连接到internet. 用法非常简单,只有一个方法,返回 YES或NO。一个简单的例子:view plainif([ConnectionisConnected]){...}else{...}这个类的头文件:view plain////Connection.h//#import<Foundation/Foundation.h>#import<SystemConfiguration/SystemConfiguration.h>#import<netinet/in.h>#import<arpa/inet.h>#import&阅读全文
摘要: 添加 AudioToolbox frameworkAudioServicesPlaySystemSound(kSystemSoundID_Vibrate);阅读全文
摘要: detectDevice.h@interfaceUIDevice(Helper)-(BOOL)isJailbroken;@enddetectDevice.m@implementationUIDevice(Helper)-(BOOL)isJailbroken{BOOLjailbroken=NO;NSString*cydiaPath=@"/Applications/Cydia.app";NSString*aptPath=@"/private/var/lib/apt/";if([[NSFileManagerdefaultManager]fileExistsAt阅读全文
摘要: 有时候需要用代码的方式关闭程序,其实功能就像按了home键。这两种可以用[selfperformSelector:@selector(notExistCall)];abort();这两种是私有的,不能通过app store.[[UIApplicationsharedApplication]performSelector:@selector(terminateWithSuccess)];exit(0); http://blog.csdn.net/favormm/article/details/6444351阅读全文
摘要: 在滚动过程当中,其实是在修改原点坐标当手指触摸后, scroll view会暂时拦截触摸事件,使用一个计时器,假如在计时器到点后,没有发生手指移动事件,那么,scroll view发送tracking events到被点击的subview假如在计时器到点前,发生了移动事件,那么 scroll view 取消tracking自己发生滚动子类可以重载touchesShouldBegin:withEvent:inContentView: 决定自己是否接收touch事件pagingEnabled当值是YES,会自动滚动到subview的边界,默认是NOtouchesShouldCancelInCont阅读全文
摘要: void UncaughtExceptionHandler(NSException *exception) { NSArray *arr = [exception callStackSymbols]; NSString *reason = [exception reason]; NSString *name = [exception name]; NSString *urlStr = [NSString stringWithFormat:@"mailto://suifeng_89@163.com?subject=bug报告&body=感谢您的配合!<br><阅读全文
摘要: 如果程序中用到了WiFi,想有WiFi提示,怎么做呢?其实很简单,只需要在.plist文件中加入如下Key/Value即可:代码键名:Application uses Wi-Fi 值:YES 键名:SBUsesNetwork 值:3 如图所示:示例代码:点击此处下载。公司项目需要网络,有一个需求,当iphone设置成飞行模式时,再运行程序时,会弹出如图对话框。 image今天发现可以通过修改 Info.plist 文件来达到目的加入UIRequiresPersistentWiFi字段,设置为truehttp://blog.csdn.net/diyagoanyhacker/article/det阅读全文
摘要: + (NSString*)getCarrier:(NSString*)imsi{ if (imsi == nil || [imsi isEqualToString:@"SIM Not Inserted"] ) { return @"Unknown"; } else { if ([[imsi substringWithRange:NSMakeRange(0, 3)] isEqualToString:@"460"]) { NSInteger MNC = [[imsi substringWithRange:NSMakeRange(3, 2)阅读全文
摘要: iOS 的 SDK 中只有反向 gecoder,即从经纬度到地址的解析,没有正向即从地址到经纬度的解析。 要支持正向解析就只有直接调用 google api。今天与大家分享两个开源的项目,支持正向与反 本文转自 http://blog.csdn.net/favormm/archive/2011/06/29/6574658.aspx iOS 的 SDK 中只有反向 gecoder,即从经纬度到地址的解析,没有正向即从地址到经纬度的解析。 要支持正向解析就只有直接调用 google api。今天与大家分享两个开源的项目,支持正向与反向解析https://github.com/mjisrawi/i.阅读全文
摘要: -(BOOL)validateEmail:(NSString*)email{ if((0 != [email rangeOfString:@"@"].length) && (0 != [email rangeOfString:@"."].length)) { NSCharacterSet* tmpInvalidCharSet = [[NSCharacterSet alphanumericCharacterSet] invertedSet]; NSMutableCharacterSet* tmpInvalidMutableCharSet =阅读全文
摘要: + (UIColor *) colorWithHexString: (NSString *) stringToConvert{ NSString *cString = [[stringToConvert stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString]; // String should be 6 or 8 characters if ([cString length] < 6) return DEFAULT_VOID_COLOR; // 阅读全文
摘要: 这种UITextField实现效果如下: UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 45, 21)]; lbl.backgroundColor = [UIColor clearColor]; lbl.textColor = [UIColor lightGrayColor]; lbl.text = @"Start:"; UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(50, 100, 150, 31)]; tf.b阅读全文
摘要: NSMutableArray *ma1 = [[NSMutableArray alloc] init]; [ma1 addObject:@"2"]; [ma1 addObject:@"1"]; [ma1 addObject:@"3"]; NSSortDescriptor *sd1 = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:NO]; NSArray *arr1 = [ma1 sortedArrayUsingDescriptors:[NSAr阅读全文
摘要: MBProgressHUD(进展指示符库)地址:https://github.com/jdg/MBProgressHUD苹果的应用程序一般都会用一种优雅的,半透明的进度显示效果,不过这个API是不公开的,因此你要是用了,很可能被清除出AppStore。而 MBProgressHUD提供了一个替代方案,而且在用户角度上,实现的效果根本看不出和官方程序有什么差别。同时还提供了其他附加功能,比如虚拟进展 指示符,以及完成提示信息。整合到项目里也很容易,这里不细谈了。ASIHttpRequest(HTTP Network库)地址:http://allseeing-i.com/ASIHTTPReques阅读全文
摘要: when I wrote about local notifications one thing that I left out was the ability to schedule a repeating notification. One of the reasons I did not bother to mention the ability to set a repeat interval is that the function is very limited. At least it is with iOS 4.1 at the time of writing. To show阅读全文
摘要: NSDate *fooDate = [NSDate date];unsigned units = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit;NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];NSDateComponents *components = [calendar components:units fromDate:fooDate]阅读全文
摘要: If you’ve installed Xcode 3.2.3 you quickly became aware that the only SDK’s packaged with this version are 4.0 and 3.2. Until 4.x has widespread adoption, chances are you’ll want your applications to run on earlier versions of the iPhone OS (iOS) SDK. You can accomplish this feat through two config阅读全文
摘要: ShareKit is incredibly easy to add to any existing project. Follow the steps below and you can be up and running in under 15 minutes. Step 1: DownloadDownload ShareKit Version 0.2.1 - Download includes ShareKit and an example project. Step 2: Adding ShareKit to your ProjectCopy Files from Example P.阅读全文
摘要: 首先要说的是CALayers 是屏幕上的一个具有可见内容的矩形区域,每个UIView都有一个根CALayer,其所有的绘制(视觉效果)都是在这个layer上进行的。(译者注:为验证这点,我写下了如下代码:12345678910UILabel*lable=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 30)];lable.text=@"test";[self.view addSubview:lable];lable.backgroundColor=[UIColor clearColor];[lable release]阅读全文
摘要: iphone的通讯录是按照字母进行排序的,那么中文需要知道第一个字母是什么,下面这个类库就可以方便的得到中文所对应的相关字母。/* * // Example * * #import "pinyin.h" * * NSString *hanyu = @"测试!"; * for (int i = 0; i < [hanyu length]; i++) * { * printf("%c", pinyinFirstLetter([hanyu characterAtIndex:i])); * } * */http://wangjun.ea阅读全文
摘要: 免费的条形码是zbar,其使用地址是:http://zbar.sourceforge.net/iphone/sdkdoc/install.html下面是实现的效果: 利用条形码,可以简单的得到二维码的值.具体的实现过程如下:首先下载zbr的sdk。然后,创建工程,iphone.scanbar。第三,把下载的ZBarSDK添加到工程中。第四,然后添加.framework到工程中。 第五,然后添加一个按钮,处理效果。#pragma mark – #pragma mark onClickButton -(IBAction)onButton:(id)sender { ZBarReaderViewCon阅读全文
摘要: iOS设备现在有三种不同的分辨率:iPhone 320x480, iPhone 4 640x960, iPad 768x1024。以前程序的启动画面(图片)只要准备一个Default.png就可以了,但是现在变得复杂多了。如果一个程序,既支持iPhone又支持iPad,那么它需要包含下面几个图片:Default-Portrait.png iPad专用竖向启动画面 768x1024或者768x1004Default-Landscape.png iPad专用横向启动画面 1024x768或者1024x748Default-PortraitUpsideDown.png iPad专用竖向启动画面(Ho阅读全文
摘要: NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];NSArray* languages = [defs objectForKey:@"AppleLanguages"];NSString* preferredLang = [languages objectAtIndex:0];NSLog(@"%@",preferredLang); 阅读全文
摘要: 目录目录发起一个同步请求创建一个异步请求队列请求请求队列上下文ASINetworkQueues, 它的delegate提供更为丰富的功能取消异步请求安全的内存回收建议向服务器端上传数据下载文件获取响应信息获取请求进度cookie的支持大文件断点续传ASIDownloadCache 设置下载缓存多种的缓存并存缓存策略缓存存储方式缓存其它特性实现自定义的缓存使用代理请求ASIHTTPRequest, 请求的其它特性ASIHTTPRequest是一款极其强劲的HTTP访问开源项目。让简单的API完成复杂的功能,如:异步请求,队列请求,GZIP压缩,缓存,断点续传,进度跟踪,上传文件,HTTP认证在新阅读全文
摘要: OverviewPie charts are good for showing simple proportional part-to-whole information. You can create a single series pie chart, where each series is made of multiple slices, or multi-series, concentric charts.Each series describes one pie, and each data value specifies one slice. When using nested 阅读全文
摘要: Project SetupThis tutorial will use a simple application called “TwitterRush” to demonstrate Twitter OAuth integration for the iPhone. By downloading the TwitterRush application, you will be able to precisely follow all steps in this tutorial. However, if you already have an iPhone project that you 阅读全文
摘要: 第一种方法01.//Add text to UIImage 02. 03.-(UIImage *)addText:(UIImage *)img text:(NSString *)text1{ 04. 05. int w = img.size.width; 06. 07. int h = img.size.height; 08. 09. //lon = h - lon; 10. 11. CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 12. 13. CGContextRef context = CGBitmapContext阅读全文
摘要: 这一节将会讲到添加地图注解,这个需要用到MKAnnotation这个协议,主要有两个UILabel类型的属性,title和subtitle,当用户点击小别针时候就会把相关信息显示出来,如下图:大概的操作是这样的,先定义一个继承了MKAnnotation的类,第当需要加上注解的时候,就根据当前的region等信息,实例化出一个对像,然后把它addAnnotation到googleMap上去就可了。为了实现MKAnnotation我们重新定义一个类来操作。新建objectiv-c的NSObject类.h头文件#import<Foundation/Foundation.h>#import阅读全文
摘要: 这一节我将用看到那个google的地图,在实现上也相当简便。嵌入地图时需要MKMapView这个类, 它有很多方法和属性,不过如果只是想得到基本的定位功能的话,只需实例化一个对像然后加到当前的view上就可以了。<一>先介绍一下,它的几个常用的属性。region用来设置地图的那一部份被显示,它是一个结构体,定义如下:typedefstruct{CLLocationCoordinate2Dcenter;//表示显示的中心MKCoordinateSpanspan;//表示比例}MKCoordinateRegion;对于MKCoordinateSpan其定义如下:typedefstruc阅读全文
摘要: 在iphone中可以用corelocation功能来实现地理定位,并可用mapkit框架加载google地图。一、CoreLocation实现定位CoreLocation主要应用了GPS,蜂窝基站三角网以及Wi_Fi(WPS)三种技术。一代iphone之后,有的把这称之为AssistantGPS(A_GPS),第一代iphone不具备GPS功能。想得到定点的信息,其实不难,只需要涉及到几个类,CLLocationManager,CLLocation,CLLocationManagerdelegate协议,CLLocationCoodinate2D,CLLocationDegrees。<一阅读全文
摘要: 从icon说起命名方法,举例Icon.png 57×57Icon-72.png 72×72Icon-Small.png 29×29Icon-Small-50.png 50×50Icon@2x.png114×114Icon-Small@2x.png 58×58另iTunesArtwork 512×512在info.plist使用key CFBundleIconFiles,注意与CFBundleIconFile区分开,CFBundleIconFiles的优先级高于CFBundleIconFile省略扩展名,直接写Icon,会自动阅读全文
摘要: 大家在是使用Xcode开代码的时候,有没有发现Xcode自带的配色太亮或者不适合自己。小编下面就介绍几款不错的暗色配色(听讲暗色会保护眼睛)。以下配色只是小编收集,版权归原作者所有。一. EGOEGO Theme相关地址: http://developers.enormego.com/view/xcode_ego_theme二. DarkCityDarkCity Theme相关地址: http://www.robinlu.com/blog/archives/320三. HumaneHumane Theme相关地址: http://damieng.com/blog/2008/02/08/huma阅读全文
摘要: NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。每个程序都会有它自己的沙盒,通过它你可以阅读/编写文件。写入沙盒的文件在程序的进程中将会保持稳定,即便实在程序更新的情况下。如下所示,你可以在沙盒中定位文件目录://对于错误信息NSError *error;// 创建文件管理器NSFileManager *fileMgr = [NSFileManager defaultManager];//指向文件目录NSString *documentsDirectory= [NSHomeDirectory() stringBy阅读全文
摘要: 提纲:简介与C语言相比要注意的地方objective-c高级特性开发工具介绍(cocoa工具包的功能,框架,源文件组织;XCode使用介绍)简介:1.objective-c是C语言的一个扩展集,主要由APPLE公司维护,是MAC系统下的主要开发语言。个人认为,对于用惯了常用的C,JAVA等语言的人来说,objective-c是一中很另类,非主流的语言。2.开发Mac的UI程序来说,使用的是Cocoa这个框架,cocoa的组成部分有:foundation和application kit框架。【foundation框架处理用户界面之下的特性,如数据结构和通信机制;application kit框架阅读全文
摘要: 转自:http://macos.it168.com/thread-9126-1-1.html第一步,配置 Subversion Leopard中自带了SVN,但Xcode的项目文件中,并不是所有文件都适于加入SVN中进行管理,比如编译后的文件和编译过程中产生的文件,这些文件不属于源代码,应该告诉svn忽略掉,方法:编辑 ~/.subversion/config 文件注意:如果”.subversion”目录不存在,请运行”svn status”命令,虽然此命令会失败,但是会为你创建所需要的文件. open ~/.subversion/config 打开文件1. 找到 global-ignores阅读全文
摘要: 转自:http://fei263.blog.163.com/blog/static/92793724201062033414411/首先在Executables拦下点击getinfo在Variables to be set in the environment 下添加环境变量NSZombieEnabled当程序出现EXC_BAD_ACCESS错误的时候,在Debugger里会有类似下面的输 出阅读全文
摘要: scroll view 原理在滚动过程当中,其实是在修改原点坐标当手指触摸后, scroll view会暂时拦截触摸事件,使用一个计时器,假如在计时器到点后,没有发生手指移动事件,那么,scroll view发送tracking events到被点击的subview假如在计时器到点前,发生了移动事件,那么 scroll view 取消tracking自己发生滚动子类可以重载touchesShouldBegin:withEvent:inContentView: 决定自己是否接收touch事件pagingEnabled当值是YES,会自动滚动到subview的边界,默认是NOtouchesShou阅读全文
摘要: 在 iPhone 应用或者是游戏的开发过程中,对声音的支持是必不可少的。在我做过的几个应用中,每个都涉及到音效,所以在这里做个简单的归纳,很多都是引用自《iPhone Application Programming Guide》(需要有 Apple ID 才能打开链接),加了一些实际使用的经验。iPhone OS 主要提供以下了几种播放音频的方法: System Sound ServicesAVAudioPlayer 类Audio Queue ServicesOpenAL1. System Sound ServicesSystem Sound Services 是最底层也是最简单的声音播放服务阅读全文
摘要: 一、iPhone Mockuphttp://iphonemockup.lkmc.ch/可绘制简单线框图(Illustration)和手绘风格线框图(Pencil)两种风格的原型。组件都可以任意拖动,放到合适的位置。但是由于是在线软件,可能在安全保障上会有些欠缺,而且有些类似于沙盘的形式,不知道什么时候还会消失。优点是可以协同创作。二、BalsamiqMockupshttp://www.balsamiq.com/Balsamiq Mockups 提供了 9 大类共 50 多个控件,涵盖了几乎所有常用的 UI 控件。不管是桌面软件、手机软件还是 Web 站点,都能搞定,且软件极易上手。Balsam阅读全文
摘要: 一年前斯坦福和Apple联手推出了基于iPhone平台的开发课程, 这个课程的ppt被放在网上分享,反响非常好。这个学期,斯坦福将课程进行了录像,放在了iTunes university上提供下载,目前这个课程在iTunes的下载排行第一,达到了100万人次的下载。这次给大家分享的是其中关于“成功开发iPhone软件的10个步骤”的讲座,虽然与我们工作中设计软件的应用平台不同,但是还是有很多成功的经验可以借鉴。1. 决定要做什么 人们很容易犯的一个错误是“从结论出发”,比如决定要做一个本地社会关系网的软件,而没有去想究竟做这个软件是想解决什么问题,是为了解决和好友找地方吃饭的问题还是别的什么阅读全文
摘要: PrefaceI don’t normally post highly technical stuff to my blog, but here’s an exception that I hope will benefit the Mac and iOS (iPhone & iPad) developer community. So if you’re not part of that, feel free to skip it.IntroductionThis article is a cumulative list of the most commonly-violated best p阅读全文
摘要: How To Choose The Best XML Parser for Your iPhone ProjectXMLPerformance Test App Extended To Compare 3rd Party LibrariesThere are a lot of options when it comes to parsing XML on the iPhone. The iPhone SDK comes with two different libraries to choose from, and there are several popular third party l阅读全文
摘要: 导读:对于开发人员来说,阅读其他人的优秀代码是一种绝佳的内功提升方式。以Flash/Flex教程而知名的Ntt.CC网站最近收集了50多个开源的iPhone软件,极具学习价值。苹果的iPhone应用商店获得了前所未有的成功,在线上已经有超过20万的应用程序。我们在这里选取了50个经典的开源的iPhone应用及其源码下载,供iPhone开发者们学习分享。ABC123:一个挑战记忆力的游戏源码下载Co...阅读全文
摘要: 详细步骤: 1)创建一个空文件,取名为InfoPlist.strings2)对InfoPlist.strings进行本地化(Get Info-> Make Localization),然后设置需要的语言(如中文zh)3)编辑不同的InfoPlist.strings文件,设置显示名字 CFBundleDisplayName = "名字"; 4)编辑Info.plist,添加一个新的属性Appl...阅读全文
摘要: 红色是需要用到的缩写 'ar' => array('language' => 'Arabic', 'locale' => 'ara', 'localeFallback' => 'ara', 'charset' => 'utf-8'),'ar-ae' => array('language' => 'Arabic (U.A.E.)', 'locale' =&g...阅读全文
摘要: 官方SDK最简单的方法最简单的方法就是做一个全屏的欢迎页的图片,把它命名为Default.png,然后放在Xcode工程的Resource里面。 执行就可以看到你的这个默认图像在程序完全加载之前显示在屏幕上。但是这个方法有个问题,如果你的程序很快载入了,这个图片会立刻消失,导致还没有看清楚图片上的内容。 而且有些内容虽然程序已经载入了,但是有些程序需要的资源是要从服务器上加载的,所以直接进入程序,...阅读全文
摘要: Table View是iPhone最重要的用户UI之一,用来显示具有层级关系的数据结构。本教程将建立一个最基本的Table View,显示数组中的数据。Table View的角色让用户在层级化的数据中浏览展示一个可选择列表选项展示一个有序的项目列表在不同的分组中显示详细信息和控件Table view中的每一行称作一个cell,用来显示文字、图片或者其他内容。每个cell还可以有子视图。iPhone...阅读全文
摘要: 在iPhone中应用Google地图其实很简单, 下面的例子将告诉你如何通过经纬度或者一个地址在iPhone中打开一个Google地图。下面这个例子展示如何用经纬度来打开Google地图://Using longitude and latitude to drop a pin on Google maps float longitude = 38.892219; float latitude = ...阅读全文
摘要: 当你使用iPhone模拟器测试过很多程序以后,模拟器中放置了大量无用的程序。 一直在找如何清除这些程序,其实后来发现很简单。 模拟器本身就带将这些程序清除到垃圾箱的功能。http://blog.prosight.me/index.php/2009/09/370阅读全文
摘要: iPhone SDK提供了默认的几个TableView样式,但是如果想提供更个性化的样式就需要自己定义。 比如添加背景如上图的样子。 其实自定义table view的样子很简单,无非就是把table view和table view cell的背景变成透明的,然后在指定视图和cell的背景图片(当然,也可以指定table view的背景图片)@interface MainViewController...阅读全文
摘要: 在iPhone中,可以直接用UIApp打开URL地址。如下所示:[ UIApp openURL: [ NSURL URLWithString:@"http://www.apple.com" ] ];或者:[ UIApp openURL: [ NSURL URLWithString:@"mailto:apple@mac.com?Subject=hello" ] ];与此同时,iPhone还包含一些其...阅读全文
摘要: 有时候你的应用需要将应用中的图片保存到用户iPhone或者iTouch的相册中。 可以使用UIKit的这个类方法来完成。void UIImageWriteToSavedPhotosAlbum ( UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo);image要保存到用户设备中的图片compl...阅读全文
摘要: 有时候你的程序需要知道用户使用的设备是iPhone还是iPod。因为有些特性iPod是没有的,比如电话功能。方法很简单:NSString *deviceType = [UIDevice currentDevice].model;如果你想得到一个本地化的字符串,可以使用以下命令:NSString *deviceType = [UIDevice currentDevice].modellocalize...阅读全文
摘要: AVAudioPlayer 提供了大量的特性,包括暂停播放,调整音量,监控音频的峰值和均值等等。 我们看下面的例子:AVAudioPlayer *player;NSString *path;// 设置音乐文件路径path = [[NSBundle mainBundle] pathForResource:@"sound-file" ofType:@"mp3"];// 判断是否可以访问这个文件if (...阅读全文
摘要: 有时候我们的应用程序不需要在图标上加上默认的高光,可以在你的应用的Info.plist中加入:UIPrerenderedIcon,让它等于YES即可http://blog.prosight.me/index.php/2010/01/566阅读全文
摘要: 默认的,UIAlertView都有一个或者多个按钮,如果你想创建没有按钮的UIAlertView,可以使用以下的方法:UIAlertView *alert;alert = [[[UIAlertView alloc] initWithTitle:@"Configuring Preferences\nPlease Wait…" message:nil delegate:self can...阅读全文
摘要: Objective-C的集合类序列化到文件中或者从文件中反序列化其实很简单,请看下面的示例代码:NSArray *array = [NSArray arrayWithObjects: @"Hefeweizen", @"IPA", @"Pilsner", @"Stout", nil];NSDictionary *dictionary = [NSDictionary dictionaryWithObj...阅读全文
摘要: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [application setApplicationIconBadgeNumber:5];//设置为0就消失了}阅读全文
摘要: Here we go with Part 2 of “Finding Business Listings and Displaying with MapKit”. In the first part we looked at how to gather the data from Google Maps. Now, we are going to take that dat...阅读全文
摘要: Time to wrap up this 3 part series and put the final polish on our map. We need to do two basic thing. We need to replace the native pin annotation views with our custom views and we need to center th...阅读全文
摘要: In this three part series, I want to show you how you can easily show a user business listings based on their current location. To do so we’ll be using the CoreLocation and MapKit Frameworks. Fi...阅读全文
摘要: 如今,配备GPS功能的移动设备越来越普遍了,使用GPS定位系统,可以精确地定位你当前所在的地理位置,但由于GPS接收机需要对准天空才能工作,因此在室内环境基本无用。 另一个找到自己所在位置的有效方法是使用手机基站,手机开机时,它会与周围的基站保持联系,如果你知道这些基站的身份,就可以使用各种数据库(包含基站的身份和它们的确切地理位置)计算出手机的物理位置。基站不需要卫星,和GPS不同,它对室内环...阅读全文
摘要: 实现的效果如下:实现的过程是修改两个table 的controller类,修改方法如下:#import <UIKit/UIKit.h>@interface WelcomePavilionViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>{NSMutableArray *ar...阅读全文
摘要: 效果图:iphone sdk已经给我们实现好了NSXMLParser,我们只需继承重写一些方法既可。代码声明:#import <Foundation/Foundation.h>@interface XmlWelcome : NSXMLParser{NSMutableArray *ones;NSMutableDictionary *one;int inOne;int inTwo;int ...阅读全文
摘要: 下面是一个最简单的例子。效果如图:上面用到了json传递的数据,有关json部分,iphone sdk虽然没有支持,但是第三方已经写好了。json 参考:http://code.google.com/p/json-framework/下面是具体的代码实现:数据加载:#import “MyDataSource.h”#import “JSON.h”@im...阅读全文
摘要: 实现一个显示文字为测试的视图,然后经过3秒钟测试文字变为回调函数文字。相应的截图如下: 实现的代码如下:定义协议:#import <UIKit/UIKit.h> @protocol NoteDelegate //回调函数 -(void)messageCallBack:(NSString *)string; @end 调用协议:#import <Foundation/Founda...阅读全文
摘要: 具体的代码是:[[UIApplication sharedApplication] performSelector:@selector(terminateWithSuccess)]; http://wangjun.easymorse.com/?p=899阅读全文
摘要: iphone当后台加载数据时,在手机的标题栏会有一个加载图标,利用程序可以控制网络的加载。加载图标: 实现的代码:[UIApplication sharedApplication].networkActivityIndicatorVisible=NO;http://wangjun.easymorse.com/?p=902阅读全文
摘要: MyClass.hMyClass.m为什么要加self. ? 直接写成self.myObject = [[MyObject alloc] init];不是也没有错么? 不加self有时好像也是正常的?现在我们来看看内存管理的内容:先看间接赋值的:1.加self.:2. 不加self.:再看直接赋值的:3.加self.:4. 不加self.:现在是不是有点晕, 我们先来把代码改一下, 官方的一种常见...阅读全文
摘要: 在XCode下创建的Tab Bar Application并不支持横向屏幕显示,主要原因是UITabBarController并没有响应shouldAutorotateToInterfaceOrientation方法。要让其支持横向屏幕显示,只需创建一个继承UITabBarController的新类,然后让其响应shouldAutorotateToInterfaceOrientation方法,然后...阅读全文
摘要: http://www.cnblogs.com/yeti/archive/2010/05/14/1735592.htmlScenario: 希望在app退出时保存当前View中的UITextView的值,以便在app重新打开时显示用户退出前编辑的内容。 在AppDelegate的applicationWillTerminate中已经包含了保存NSUserDefaults的代码,仅需View在app退...阅读全文
摘要: 1,getter=getterName,setter=setterName,设置setter与getter的方法名2,readwrite,readonly,设置可供访问级别,在不声明的时候 默认是带readwrite参数的 就是 这个变量可以读写.2,assign,setter方法直接赋值,不进行任何retain操作,为了解决原类型与环循引用问题,assign 只是简单的传递指针。3,retain...阅读全文
摘要: 偶然的机会发现了博主易飞扬的文章,喜悦之情无以言表,我把博主文章的索引整理了一下,感谢博主的无私奉献!!!iPhone开发入门(1)—-程序员眼中的iPhoneiPhone开发入门(2)—从iPhone SDK开始iPhone开发入门(3)—Linux上构筑iPhone OS3.1.2开发环境iPhone开发入门(4)—应用程序开发的第一步iPhon...阅读全文
摘要: 此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有, 原始链接http://vinceyuan.cnblogs.com/。前言初学objectice-C的朋友都有一个困惑,总觉得对objective-C的内存管理机制琢磨不透,程序经常内存泄漏或莫名其妙的崩溃。我在这里总结了自己对objective-C内存管理机制的研究成果和经验,写了这么一个由浅入深的教程。希望对...阅读全文
摘要: //一、NSString /*----------------创建字符串的方法----------------*/ //1、创建常量字符串。 NSString *astring = @"This is a String!"; //2、创建空字符串,给予赋值。 NSString *astring = [[NSString alloc] init]; astring = @"This is ...阅读全文
摘要: int abs(int i) 返回整型参数i的绝对值double cabs(struct complex znum) 返回复数znum的绝对值double fabs(double x) 返回双精度参数x的绝对值long labs(long n) 返回长整型参数n的绝对值double exp(double x) 返回指数函数ex的值double frexp(double value,int *ept...阅读全文
摘要: 在用sqlite设计表时,每个表都有一个自己的整形id值作为主键,其实可以不指定这么一个id值,sqlite内部本来就会为每个表加上一个 rowid,这个rowid可以当成一个隐含的字段使用,但是由sqlite引擎来维护的,在3.0以前rowid是32位的整数,3.0以后是 64位的整数,为什么不直接使用这个内部的rowid作为每个表的id主键呢。相关的文档在这里:?http://www.sqli...阅读全文
摘要: SQLite Database Browser 是一个SQLite数据库管理工具。是开源的、免费的。Home Pagehttp://sqlitebrowser.sourceforge.net/Downloadhttp://sourceforge.net/project/showfiles.php?group_id=87946Wikihttp://en.wikipedia.org/wiki/SQLi...阅读全文
摘要: sqlite3: 一个SQLite数据库的命令行接口SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令。本文档提供一个样使用sqlite3的简要说明。开始启动sqlite3程序,仅仅需要敲入带有SQLite数据库名字的"sqlite3"命令即可。如果文件不存在,则创建一个新的(数据库)文件。然后sqlite3程序将提示你输入SQL。敲...阅读全文
摘要: OS X自从10.4后把SQLite这套相当出名的数据库软件,放进了作业系统工具集里。OS X包装的是第三版的SQLite,又称SQLite3。这套软件有几个特色:支援大多数的SQL指令(下面会简单介绍)。一个档案就是一个数据库。不需要安装数据库服务器软件。完整的Unicode支援(因此没有跨语系的问题)。速度很快。目前在OS X 10.4里,SQLite是以/usr/bin/sqlite3的形式...阅读全文
摘要: 工具栏当用户需要操作当前界面内容时,使用界面底部的工具栏更为合适。例如,当用户在邮件中浏览一条信息时,工具栏上选项可以删除、回复或者移动信息,也可以新建邮件和撰写新信息。这样,用户可以停留在当前界面管理邮件。一个选项的区域为44×44像素,所以工具栏上选项要限定在五个以内,这样用户也容易点击想要的选项。工具栏中的选项可以不设边框,这在iPhone OS中称作平原风格,当然也可以像导航栏...阅读全文
摘要: 在深入研究iPhone界面的视图和控件之前,有必要理解这些元素的操作方式和隐喻含义。本文将介绍应用于大多数程序的视图,以及它们的属性和使用方式。状态栏状态栏显示iPhone的重要信息,包括信号强度、网络连接和电池量。全屏式的程序是否隐藏状态栏需要慎重考虑,否则用户退出程序才能看到手机的状态,这样的用户体验并不理想。例如,拍照时用户的注意力集中在照片上,这时隐藏状态栏几秒钟是合理的,用户可以通过点击...阅读全文
摘要: 使用方法和行为警示框、控件列表和模态视图迫使用户点击按钮之后才能继续使用程序,尽管它们时常警告用户潜在的危险或者提供额外的选择,也要避免过度使用,原因在于:所有类型的模态视图都会打断用户的工作流。需求确认或者承认视图的频繁出现更让用户厌烦。尤其是当警示框出现太频繁时,用户会直接关闭它们,而不是阅读警示框上的文字并在考虑之后点击按钮。警示框提示程序的重要信息。警示框的出现通常很意外,因为它们一般告知...阅读全文
摘要: 通用元素表视图、文本视图和网页视图在程序中经常应用。例如表视图用于显示简短的列表选项、分组的详细信息表或者项目索引列表,文本视图和网页视图可以不受限制地接收和显示内容。表视图表视图以栏列表的形式显示数据,栏可以拆分成项或者组,每栏可包含文本、图片或者控件。使用方法和行为不论是多少数量的信息,表视图都可以提供有效的管理方式,因而在iPhone界面设计中非常有用。表视图内置的元素容可供用户浏览和处理信...阅读全文
摘要: 使用iPhone自带的按钮和图标的优势在于:缩短开发时间。增加界面的稳定性。当系统升级时,即使程序外观改变,这些标准按钮和图标依旧可用。工具栏和导航栏上的标准按钮有两种类型按钮:边框型。可以在导航栏和工具栏上使用。普通型。适用于工具栏,如非要使用在导航栏上,会被转换成边框型。边框型普通型标签栏上的标准图标http://daichuanqing.com/index.php/archives/906阅读全文
摘要: iPhone OS 的几种控件被用户所熟知,有些控件可以在特殊界面中应用(如表视图),而本文将介绍可以应用在所有界面的控件。运行指示运行指示表示后台有程序正在运行,但任务完成时不会提醒用户。当程序无法立即完成联网时,状态栏上会显示运行指示。当程序执行的任务无法立即完成时,工具栏上会显示稍大点的运行指示。运行指示提供了很好的反馈机制,明确地告知用户程序正在运行比告诉用户任务已经完成更为重要。运行指示...阅读全文
摘要: 优秀的iPhone程序是在恰当的时候提供用户需要的内容。简单易用简单易用是所有类型软件的基本准则,但在iPhone程序设计中尤其重要。iPhone用户在使用手机时可能还在做其他事情,如果用户无法轻松地使用程序,他们可能回到电脑前再也不使用iPhone程序了。简单易用的方法:操作方式一目了然。优化控件的数目,使程序的主功能显然易见,引导用户操作。使用频率高的信息放置在屏幕顶部。无论用户是单手操作,还...阅读全文
摘要: iPhone界面如此精美,作为一名设计师,要充分利用iPhone已有的界面元素,根据iPhone OS图标设计准则去设计自定义图标或者图片,比如每个程序的图标、启动图片和呈现在iPhone OS Spotlight搜索结果中的小图标需要自定义。iPhone中图标和图片的标准位深度为24位(红绿蓝各8位),加上8位的alpha通道,推荐使用PNG格式。程序图标程序图标放置在手机程序主界面上,点击之后...阅读全文
摘要: xcode相关:关于xcode可设偏好设置 command+,清空缓存 可设隐藏xcode command+h隐藏其它 command+option+h显示全部 可设退出xcode command+q文件相关:新建项目 command+shift+n新建文件 command+n新建空文件 command+control+n打开 command+o在新窗口中打开 command+option+o快速...阅读全文
摘要: 1.进入itunes store,点击右上角的see all,查看所有软件。2.在软件列表内,随便点击购买一个免费软件。3.登录界面会自动弹出来,玄机就在这儿哦,呵呵,这里点击创建帐户。4.弹出到欢迎光临界面,点击继续。5.勾选接受协议,继续。6.输入邮箱、密码,保密问题及答案,继续。7.嘿嘿,看到none了吧!选择它。。。填写你的个人信息,红色箭头指示的是必填选项哈!继续。8.注册的差不多了,点...阅读全文
摘要: 有什么推送方案?Pushmail的意义在于,客户端不再是定时或手动发起收取邮件的动作,而是通过服务器的新邮件通知来触发收取邮件这一行为。在我们常用的公司局域网或固网宽带上,这一创新的意义并不大,因为流量多数都是按月来收取,带宽也不是什么问题,但是相反在移动网络中,流量的资费以及带宽的限制,使得这一方式赢得了移动用户的欢心。Pushmail采用的通知协议主要有两种,一种是通过短信的形式来通知客户端收...阅读全文
摘要: iPhone Push Notification,一个吹得天花乱坠,却又不断跳票的功能,终于在OS3.0上实现。虽然体验糟糕(Tweetie和IM+之间反复切换,每次都需要等待这两个软件加载数据,这种脑残的使用方式能代替多任务?),但是我终于可以在使用Tweetie的同时,挂着MSN了。既然BB,Nokia,Palm都先后支持了Push,那么它们之间的比较不可避免。Handspring兄有一篇文章...阅读全文
摘要: 第一部分:Push原理(以下绝大多数内容参考自、图片来自iPhone OS Reference Library)机制简介Push的工作机制可以简单的概括为下图图中,Provider是指某个iPhone软件的Push服务器。APNS是Apple Push Notification Service(Apple Push服务器)的缩写,下文统一使用该缩写。因此,整个过程可以分为三个阶段,下面用大家常用的...阅读全文
摘要: iPhone OS 3.0一个引入注目的新特性是push notifications(推送通知),它允许向已安装相关应用程序的各设备直接发送消息。苹果在新闻提示或IM应用中展示了此特性,它也十分完美地适合于我们的服务器监视服务程序Server Density。我们的程序提供一个选项,当你设定的某个服务器事件发生时,通知会直接发送到你的iPhone上。这是非常有用的因为它提醒用户立即打开我们的程序查...阅读全文
摘要: One of the key limitations of the iPhone is its constraint on running applications in the background. Because of this, applications cannot keep running in the background when the user switches to anot...阅读全文
分类: iOS开发