Fork me on GitHub

2012年2月14日

摘要: 每一个iOS应用程序都有一个实现UIApplicationDelegate协议的AppDelegate类,在HelloWorld项目里它名叫HelloWorldAppDelegate.这个AppDelegate用来通过从iOS接收消息的方式来跟踪应用程序的状态变化。例如,它可以让你确定什么时候用户接电话,或者什么时候内存将满。你的应用程序接收的第一个消息是applicationDidFinishLaunching方法。这个地方是所有启动代码都会走到的地方,也是cocos2d初始化的地方。如果你想学习更多关于AppDelegate的方法,你可以就UIApplicationDelegate协议去查 阅读全文
posted @ 2012-02-14 18:46 pengyingh 阅读(184) 评论(0) 推荐(0)
摘要: 通常调用某个动作的方法:// 创建动作 id actionTo = [CCMoveTo actionWithDuration: 2 position:ccp(s.width-40, s.height-40)];// 使用动作。(说明:tamara 是一个 CCSprite。) [tamara runAction: actionTo];瞬时动作顾名思义。瞬时动作就是不需要时间,马上就完成的动作。瞬时动作的共同基类是 InstantAction。放置 – Place效果类似于 node.Position = ccp(x, y)。之所以作为一个动作来实现是为了可以与其他动作形成一个连续动作。示例:- 阅读全文
posted @ 2012-02-14 18:45 pengyingh 阅读(290) 评论(0) 推荐(0)
摘要: 场景(CCScene)-主要为了作为容器对象展示类场景:播放视频戒简单的在图像上输出文字,来实现游戏的开场介绍、 胜利、失败提示、帮助简介。选项类场景:主菜单、设置游戏参数等。游戏场景:返是游戏的主要内容,除了返个场景以外的其他类场景基本上都是通用架构实现的。每个场景都是通过不同的局(Layer)的叠加和组合协作来实现不同的功能的。层(CCLayer)-为了处理输入问题为了让不同的局可以组合产生统一的效果,这些层基本上 都是透明戒者半透明的。文本(Label)、链接(HTMLLabel)、精灵(Sprite)、地图等等。其中,精灵是重点主要功能就是接收iPhone上的屏幕触摸(touch)操作 阅读全文
posted @ 2012-02-14 18:44 pengyingh 阅读(164) 评论(0) 推荐(0)
摘要: 在这里我们新建一个名为“Test2d”的项目,在xcode中的Group&Files中看到的文件结构如下所示:cocos2d Sources:存放的是cocos2d源代码Classes:存放本应用程序源代码Other Sources: 程序的入口main函数Resources:存放本项目的图片、图标、声音文件等等Frameworks:框架顺一下启动流程从main函数进入:#import <UIKit/UIKit.h>int main(int argc, char *argv[]) { NSAutoreleasePool *pool = [NSAutoreleasePool 阅读全文
posted @ 2012-02-14 18:43 pengyingh 阅读(279) 评论(0) 推荐(0)
摘要: 需要的SDK版本:SDK3.0Cocos2d-iPhone 的最新版下载地址:http://code.google.com/p/cocos2d-iphone/downloads/list,可以先解压到 Documents 目录下。打开 Terminal 工具(Application->Utilities->Terminal),通过“ls”命令列出当前目录,通过“cd documents”迚入 Documents,再进入你下载的 Cocos2d-iPhone-0.99.4目录下,通过以下命令安装:./install-templates.sh*.sh 文件是一个类似 Windows 平 阅读全文
posted @ 2012-02-14 18:42 pengyingh 阅读(2983) 评论(0) 推荐(0)
摘要: NSXMLParser 实现的是sax方法解析xml文件。dom实现的原理是把整个xml文档一次性读出,放在一个树型结构里。在需要的时候,查找特定节点,然后对节点进行读或写。他的主要优势是实现简单,读写平衡;缺点是比较占内存,因为他要把整个xml文档都读入内存,文件越大,这种缺点就越明显。sax的实现方法和dom不同。他只在xml文档中查找特定条件的内容,并且只提取需要的内容。这样做占用内存小,灵活,正好满足我们的需求。他的缺点就是写,有些资料介绍了写入的方法,但是我感觉这对本例没有必要。运行NSXMLParser涉及设置、运行和响应结果。1)启动NSXMLParser要使用NSXMLPars 阅读全文
posted @ 2012-02-14 13:58 pengyingh 阅读(213) 评论(0) 推荐(0)
摘要: XML Parser 是做网络应用开发常用到的,iPhone SDK 自带了两个 libraries,除此之外还有很多第三方的 XML Parser libraries,包括 TBXML, TouchXML, KissXML, TinyXML, and GDataXML,这里就有一个问题,做开发的时候该选择哪一个适合自己的?CocoaChina 会员 “jjyycwy” 为我们做了具体介绍: 首先要清楚两个概念:SAX 和 DOM。SAX,Simple API for XML,属于 event driven,即所谓的事件驱动。当满足一定的条件时,相应的事件就会被驱动,常用的事件类似于Error 阅读全文
posted @ 2012-02-14 13:46 pengyingh 阅读(232) 评论(0) 推荐(0)
摘要: 这是所有做电子书之类的程序都会遇到的一个问题. 前一阵搞一个项目, 花了3天时间搞这个小方法, 总是分页不够精确. 谢谢CCLV@CocoaChina 在老婆生病的时候还给我提供帮助 :) 最后我发现了问题所在:要用UILabel来显示文字, 而不是TextView!!我发现盛大起点中文的电子书app还存在分页不准的问题,李博要努力噢 哈哈~~大体思路就是,把字符串分段落, 用段落去填充页. 下面是这个小方法, 希望会对大家有帮助:-(NSArray*)getPagesOfString:(NSString*)cache withFont:(UIFont*)font inRect:(CGRect 阅读全文
posted @ 2012-02-14 13:40 pengyingh 阅读(386) 评论(0) 推荐(0)
摘要: AddressBook.framework联络人提供您存取在装置中的联络人资料,让您可以在您的应用程式中直接读取或修改联络人资料库中的资料。AddressBookUI.framework联络人介面让您可以快速的制作出类似内建联络人功能中的出新增、编辑及选择联络人等介面。CoreAudio.framework定义音效的资料型态。AudioToolbox.framework音效处理工具提供音效及串流档案重播与录音的服务,此framework同时支援音效档案的管理及播放系统内建的提示音效。AudioUnit.framework音效处理单元为内建的声音处理模组audio units来提供服务。AVFo 阅读全文
posted @ 2012-02-14 13:38 pengyingh 阅读(1495) 评论(0) 推荐(0)
摘要: UIAlertView *theAlert = [[[UIAlertView alloc] initWithTitle:@"Atention" message: @"I'm a Chinese!" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"Okay",nil] autorelease]; [theAlert show]; UIImage *theImage = [UIImage imageNamed:@"loveChi 阅读全文
posted @ 2012-02-14 13:37 pengyingh 阅读(123) 评论(0) 推荐(0)
摘要: ASIFormDataRequest*request =[ASIFormDataRequest requestWithURL:url];[request setPostValue:someValue forKey:@"someKey"];[request setPostValue:someOtherValue forKey:@"someOtherKey"];[request setShowAccurateProgress:YES];[request setDownloadProgressDelegate:aProgressView];request.de 阅读全文
posted @ 2012-02-14 13:36 pengyingh 阅读(219) 评论(0) 推荐(0)
摘要: 大家用 Xcode 写代码的时候,有没有发现 Xcode 自带的配色太亮或者不适合自己?下面就介绍几款不错的暗色配色,保护各位苹果开发者的眼睛。一、EGO 相关地址:http://developers.enormego.com/view/xcode_ego_theme二、DarkCity 相关地址:http://www.robinlu.com/blog/archives/320三、Humane 相关地址:http://damieng.com/blog/2008/02/08/humane-theme-for-textmate-and-xcode四、Railscasts 相关地址:http://d 阅读全文
posted @ 2012-02-14 13:31 pengyingh 阅读(399) 评论(0) 推荐(0)
摘要: 判断 iPhone 是否插入了 SIM 卡,可以参考苹果官网的 systemconfigure framework 教程,将下面的代码复制到头文件extern NSString* const kCTSMSMessageReceivedNotification;extern NSString* const kCTSMSMessageReplaceReceivedNotification;extern NSString* const kCTSIMSupportSIMStatusNotInserted;extern NSString* const kCTSIMSupportSIMStatusRead 阅读全文
posted @ 2012-02-14 13:27 pengyingh 阅读(583) 评论(0) 推荐(0)
摘要: 因为iOS SDK相对比较底层,所以开发者就得受累多做一些体力活。不过幸运的是,有很多第三方的类库可以用来简化很多不必要的工作.经过作者团队的慎重讨论,他们评选出了10款能够极大提高iOS开发效率的类库,根据原文作者的评价来看,基本上有了这10款工具,做iOS开发就真的跟泡Cocoa一样了。MBProgressHUD——进展指示符库苹果的应用程序一般都会用一种优雅的,半透明的进度显示效果,不过这个API是不公开的,因此你要是用了,很可能被清除出AppStore。而MBProgressHUD提供了一个替代方案,而且在用户角度上,实现的效果根本看不出和官方程序有什么差别。同时还提供了其他附加功能, 阅读全文
posted @ 2012-02-14 13:25 pengyingh 阅读(134) 评论(0) 推荐(0)
摘要: 把两个字符串变成相同的基本操作定义如下:修改一个字符(如把 a 变成 b)增加一个字符 (如 abed 变成 abedd)删除一个字符(如 jackbllog 变成 jackblog) 针对于 jackbllog 到 jackblog 只需要删除一个或增加一个 l 就可以把两个字符串变为相同。把这种操作需要的次数定义为两个字符串的距离 L, 则相似度定义为1/(L+1) 即距离加一的倒数。那么 jackbllog 和 jackblog 的相似度为 1/1+1=1/2=0.5,也就是所两个字符串的相似度是 0.5,说明两个字符串已经很接近啦。 任意两个字符串的距离都是有限的,都不会超过他们的长度 阅读全文
posted @ 2012-02-14 13:17 pengyingh 阅读(1007) 评论(0) 推荐(0)
摘要: 1、 若将一个view作为子视图添加到window中,则当设备的方向变换时,该视图不会随之变化,也就是所不会响应设备的方向变化事件。如:“图片放大视图”,“报纸选择视图”...要使其响应方向变化事件,最好是将该视图添加到一个视图中而不是window中。2、通过Interface Builder创建的视图默认的背景色是白色的,要使得该视图透明,可以将其背景色改为clearcolor。3、再viewcontroller的viewdidload方法中,self.view一直是nil的。所以在viewdidload中使用[uiactionsheet showinview:self.view];就会使程 阅读全文
posted @ 2012-02-14 13:13 pengyingh 阅读(941) 评论(0) 推荐(0)
摘要: /* +(NSDictionary*)SeparateImage:(UIImage*)image ByX:(int)x andY:(int)y cacheQuality:(float)quality; 方法说明: NSDictionary*:返回字典,UIImageView格式,不仅含有 Image 还含有 Rect。 image: 图片资源,要求为UIImage格式。x: y:分别表示要切成几行和列,最小值为1。 quality:处理后保存的小图片的质量。(0,1]有效,小于或为0不保存,大于1时会被强强制为1。 切割后的小图片保存位置为 Homedirectory, 可以通过 nslog( 阅读全文
posted @ 2012-02-14 13:11 pengyingh 阅读(295) 评论(0) 推荐(0)
摘要: 一、功能细分1、对视图添加长按手势的识别:{UILongPressGestureRecognizer类的使用}UILongPressGestureRecognizer*longPressRecognizer = [[UILongPressGestureRecognizeralloc]initWithTarget:selfaction:@selector(handleLongPress:)];longPressRecognizer.allowableMovement=30;[testViewaddGestureRecognizer:longPressRecognizer]; [longPr... 阅读全文
posted @ 2012-02-14 13:06 pengyingh 阅读(299) 评论(0) 推荐(0)
摘要: iPhone 中的线程应用并不是无节制的,官方给出的资料显示iPhone OS下的主线程的堆栈大小是1M,第二个线程开始都是512KB。并且该值不能通过编译器开关或线程API函数来更改。 只有主线程有直接修改UI的能力。一、NSOperation和NSOperationQueue 1、一个继承自NSOperation的操作类,该类的实现中必须有 -(void)main方法的。 2、使用NSOperation的最简单方法就是将其放入NSOperationQueue中。 一旦一个操作被加入队列,该队列就会启动并开始处理它(即调用该操作类的main方法)。一旦该操作完成队列就会释放它。 ... 阅读全文
posted @ 2012-02-14 13:05 pengyingh 阅读(1258) 评论(0) 推荐(0)
摘要: 加密技术通常分为两大类:“对称式”和“非对称式”。 对称式加密:加密和解密使用同一个密钥,通常称之为“Session Key ”。如DES,它的Session Key长度为56Bits。 非对称式加密:加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”。如RSA。[DES:密钥较短,加密处理简单,加解密速度快,适用于加密大量数据的场合。]DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人的PIN的加密传输,IC卡与POS间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。[RS.. 阅读全文
posted @ 2012-02-14 12:57 pengyingh 阅读(261) 评论(0) 推荐(0)
摘要: 在ios5之前的系统中,可以通过定义导航条类别的方式自定义导航条:@implementation UINavigationBar (CustomImage)- (void)drawRect:(CGRect)rect { // Drawing code UIImage *image = [[UIImage imageNamed:@"header.png"] retain]; [image drawInRect:CGRectMake(0, 0,self.frame.size.width , self.frame.size.height)]; [image release];.. 阅读全文
posted @ 2012-02-14 12:54 pengyingh 阅读(4761) 评论(0) 推荐(1)
摘要: 在最新版本的微信,新浪微博等应用中都使用到了状态栏的自定义功能:效果很酷,实现很简单: // 初始化一个状态条级别的window CGRect frame = CGRectMake(0.0, 0.0, 320.0, 20.0); UIWindow* statusbarWindow = [[UIWindow alloc] initWithFrame:frame]; [statusbarWindow setBackgroundColor:[UIColor clearColor]]; [statusbarWindow setWindowLevel:UIWindowLev... 阅读全文
posted @ 2012-02-14 12:41 pengyingh 阅读(283) 评论(0) 推荐(0)
摘要: 一般在应用中拨打电话的方式是:[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://123456789"]];使用这种方式拨打电话时,当用户结束通话后,iphone界面会停留在电话界面。用如下方式,可以使得用户结束通话后自动返回到应用:UIWebView*callWebview =[[UIWebView alloc] init];NSURL *telURL =[NSURL URLWithString:@"tel:number-to-call"];[callWebvi 阅读全文
posted @ 2012-02-14 12:32 pengyingh 阅读(270) 评论(0) 推荐(0)
摘要: 有如下三种随机数方法:1.srand((unsigned)time(0));int i = rand() % 5;2.srandom(time(0));int i = random() % 5;3.int i = arc4random() % 5 (常用) ;注:rand()实际并不是一个真正的伪随机数发生器,random()会相对好点,但也不算理想。个人来说首选arc4random() ,原因就是它是一个真正的伪随机算法,而且范围是rand()的两倍。在iPhone中,RAND_MAX是0x7fffffff (2147483647),而arc4random()返回的最大值则是 0x10000 阅读全文
posted @ 2012-02-14 12:29 pengyingh 阅读(563) 评论(0) 推荐(0)
摘要: 代码实现:头文件: #import <UIKit/UIKit.h> #import <QuartzCore/QuartzCore.h> @interface ipad_webwiewViewController : UIViewController { IBOutlet UIWebView *myWebView; UIView *myView; } @property (nonatomic,retain) UIWebView *myWebView; @end代码实现: - (void)viewDidLoad { [super viewDidLoad];//给图层添加背景 阅读全文
posted @ 2012-02-14 12:24 pengyingh 阅读(265) 评论(0) 推荐(0)
摘要: 1、初始化+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;注:不用 阅读全文
posted @ 2012-02-14 12:17 pengyingh 阅读(61590) 评论(0) 推荐(0)
摘要: 代码如下,在UITableViewDataSource中设置- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{NSMutableArray *arr = [[[NSMutableArray alloc] initWithCapacity:0] autorelease];[arr addObject:@"{search}"];//等价于[arr addObject:UITableViewIndexSearch];return arr;} 阅读全文
posted @ 2012-02-14 12:09 pengyingh 阅读(847) 评论(0) 推荐(0)
摘要: 在学习和调试iPhone 界面或者某个控件的过程中,递归地dump出UIView是一个了解界面结构很有效的方法。这样不仅可以更好地发现问题,还可以定制某些系统的标准控件。要解决这类问题,很自然会想到递归函数。实现如下:void dumpViews(UIView* view, NSString *label, NSString *indent) { Class klass = [view class]; NSString *classDescription = getFullClassDescription(klass); if ([label compare:@""] == 阅读全文
posted @ 2012-02-14 12:03 pengyingh 阅读(281) 评论(0) 推荐(0)
摘要: seachBar=[[UISearchBar alloc] init];//修改搜索框背景seachBar.backgroundColor=[UIColor clearColor];//去掉搜索框背景//1.[[searchbar.subviews objectAtIndex:0]removeFromSuperview];//2.for (UIView *subview in seachBar.subviews){if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]){[subview 阅读全文
posted @ 2012-02-14 12:01 pengyingh 阅读(1922) 评论(0) 推荐(0)
摘要: 做的APP需要在一个UIWebView中随点击位置动态出现button,用touchesBegan等怎么调试都不行,普通的UIView就可以,找了半天终于知道UIWebView不能这样用,那么怎么做呢,只有用UITapGestureRecognizer替代了,其他的手势还可以用UIPinchGestureRecognizer(放大缩小)和UIPanGestureRecognizer(拖动),SO,我们现在以UITagGestureRecongnizer来做,获取webView中的位置。UITapGestureRecognizer* myTap = [[UITapGestureRecognize 阅读全文
posted @ 2012-02-14 12:00 pengyingh 阅读(3114) 评论(0) 推荐(0)
摘要: ASIHTTPRequest 是一款极其强劲的 HTTP 访问开源项目。让简单的 API 完成复杂的功能,如:异步请求,队列请求,GZIP 压缩,缓存,断点续传,进度跟踪,上传文件,HTTP 认证。在新的版本中 ASIHTTPRequest 是一款极其强劲的 HTTP 访问开源项目。让简单的 API 完成复杂的功能,如:异步请求,队列请求,GZIP 压缩,缓存,断点续传,进度跟踪,上传文件,HTTP 认证。在新的版本中,还加入了 Objective-C 闭包 Block 的支持,让我们的代码加轻简灵活。 下面就举例说明它的 API 用法。发起一个同步请求 同步意为着线程阻塞,在主线程中使用此方 阅读全文
posted @ 2012-02-14 11:55 pengyingh 阅读(1830) 评论(0) 推荐(1)
摘要: 本文为论坛会员3h2om分享,对新浪微博iOS版SDK-“宝玉XP”框架进行研究所写的学习笔记,非常详细和精彩。本人刚入学iOS开发,在学习的过程中,对新浪微博iOS版SDK-“宝玉XP”框架进行了学习(下载地址:https://github.com/JimLiu/WeiboSDK),在没有获得相应的说明文档前提下,要理解其中的内幕对于初涉OPEN API的新人来说不算是件易事,为了满足一窥究竟的一惯心理,我在对其源代码进行一番抽丝剥茧式的跟踪后,基本上搞懂了框架内各类之间的调用关系,初略地理解了各类的大概用途,也对OAuth 认证机会有了进一步的认识。充分理解该框架后将对于开发基于HTTP协 阅读全文
posted @ 2012-02-14 11:53 pengyingh 阅读(675) 评论(0) 推荐(0)
摘要: 官方网站:http://allseeing-i.com/ASIHTTPRequest/。可以从上面下载到最新源码,以及获取到相关的资料。使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套API,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中。ASIHTTPRequest适用于基本的HTTP请求,和基于REST的服务之间的交互。ASIHTTPRequest功能很强大,主要特色如下:l 通过简单的接口,即可完成向服务端提交数据和从服务 阅读全文
posted @ 2012-02-14 11:42 pengyingh 阅读(121) 评论(0) 推荐(0)
摘要: ASIHTTPRequest是什么?ASIHTTPRequest是简单易用的,它封装了CFNetwork API。使得与Web服务器通信变得更简单。它是用Objective-C编写的,可以在MAC OS X和iPhone应用中使用。它适用于执行基本的HTTP请求和互动(或者说是反馈)。ASIFormDataRequest子类可以简单的实现提交数据和文件。使用multipart/form-data提供了以下:一个从web服务器提交和获取数据的接口直接下载数据到内存或者本地文件系统里能够从本地提交文件,作为post数据的一部分。兼容HTML file input mechanism可以访问和修改h 阅读全文
posted @ 2012-02-14 11:40 pengyingh 阅读(1637) 评论(0) 推荐(1)
摘要: http://blog.sina.com.cn/s/blog_5df7dcaf0100bp8w.html第九章:NSUndoManager使用NSUndoManaer, 我们可以给程序以一种优雅的风格添加undo功能. undo管理器跟踪管理一个对象的添加,编辑和删除.这些消息将会发送给undo管理器去做undo. 而当我们请求做undo操作时, undo管理器也会跟踪这些消息,这些消息会被记录用来做redo. 该机制使用两个NSInvocation对像堆栈来实现.在这么早就讨论这个主题是相当沉重的.(有时候一说起undo.我的头就有点大.),不过因为undo和document架构关联,所以我 阅读全文
posted @ 2012-02-14 11:30 pengyingh 阅读(1191) 评论(0) 推荐(0)
摘要: 第十章:Archiving一个面向对象程序在运行的时候, 一般都创建了一个复杂的对象关系图. 经常需要把这样一个复杂的对象关系图表示成字节流.这样的过程我们叫做arching如图10.1,这个字节流可以在网络中传送,也可以写入到文件中. 例如,我们创建保存一个nib文件,Interface Builder把对象写入到nib文件就是这样的arching过程(对于Java,这个过程叫serialization)而当从字节流中重新恢复对象关系图的过程叫做unarchive. 例如,当程序启动是,将会从nib文件中unarchive对象虽然对象包含成员变量和方法.但是只有成员变量和类名会被archiv 阅读全文
posted @ 2012-02-14 11:24 pengyingh 阅读(1497) 评论(0) 推荐(0)
摘要: 第十六章: 本地化当你创建了一个非常有用的程序后,你希望把它分享给世界上更多的人. 不幸的是,我们不是一个母语. 假如我们希望讲法文的朋友能使用RaiseMan 程序. 那我们就会说:""我需要对RaiseMan进行法文本地化"如果我们的程序被世界上人们所用,那么我们至少需要本地化下面这些语言: English,French,Spanish,GerMan,Dutch,Italian,Japanese和chinese. 我们不需要为每个语言重新编写我们的程序.实际上,我们不需要重新编写任何Objective-C代码.也就是说, 世界上所有的国家和民族可以和平友好的使 阅读全文
posted @ 2012-02-14 11:17 pengyingh 阅读(550) 评论(0) 推荐(0)
摘要: 有时候,我们可能想要通过一个Alert Panel来给用户一些警告信息. Alert panel很容易生成,在cocoa中,大部分的东西都是面向对象的,不过显示一个alert panel却是通过一个C函数来实现: NSRunAlertPanel() . 下面是函数声明:int NSRunAlertPanel(NSString *title, NSString *msg,NSString *defaultButton, NSString*alternateButton,NSString *otherButton, ...);下面的代码可以生成图15.1的Alert panelint choice 阅读全文
posted @ 2012-02-14 11:11 pengyingh 阅读(1276) 评论(0) 推荐(0)
摘要: 第十八章: Image和鼠标事件在前一章中,你在一些随机点间画线.编写成一个绘制程序会更有趣的. 为了能编写这样的程序,你必须要获取和处理鼠标事件- NSResponderNSView继承至NSResponder类. NSResponder类定义了所有的事件处理方法. 现在,我们只对鼠标事件感兴趣.至于键盘事件,留到下一章来讨论吧. NSResponder定义了如下方法:- (void)mouseDown:(NSEvent *)theEvent;- (void)rightMouseDown:(NSEvent *)theEvent;- (void)otherMouseDown:(NSEvent 阅读全文
posted @ 2012-02-14 11:04 pengyingh 阅读(3494) 评论(0) 推荐(1)
摘要: 第十七章: 自定义View程序中所有的可视对象要么是window,要么是view.在这一章中,你将创建一个NSView的子类. 随着时间的推移,你一般会需要创建自定义的view来完成自定义画图和事件响应.即使你没有打算这样做,你也应该通过学习创建view类来了解cocoa的内部工作机制window是NSWindow的对象.每个window都会有多个views,每个view描述window中的一个矩形区域. view负责该区域的画图动作以及鼠标事件响应. view也可以响应键盘消息. 你以及和多个view的子类打过交道了: NSButton, NSTextField,NSTableView,和N 阅读全文
posted @ 2012-02-14 10:54 pengyingh 阅读(3893) 评论(0) 推荐(1)
摘要: 第十三章: User Defaut大部分的程序都会有Preferences Panel来让用户设置偏好的外观和功能.用户选择的偏好设置会保存user default数据库中,在用户Home目录中: ~/Library/Preferences.找到数据库文件,一般为property list格式 我们可以使用程序 Property List Editor来浏览这些文件我们通过NSUserDefaults类来注册程序的出厂设置,保存用户偏好设置,以及读取之前保存过得用户偏好设置在12章中我们创建了一个color well控件,我们将用它来设定table view的背景颜色.当用户修改了他的pref 阅读全文
posted @ 2012-02-14 10:41 pengyingh 阅读(1509) 评论(0) 推荐(0)
摘要: 1. 定义一个方法 -(void) update{ } 2. 对象注册,并关连消息 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(update) name:@"update"object:nil] 3. 在要发出通知消息的地方 [[NSNotificationCenter defaultCenter] postNotificationName:@"update"object:nil];具体如何使用 Notificationshttp://blog.sin 阅读全文
posted @ 2012-02-14 10:29 pengyingh 阅读(379) 评论(0) 推荐(0)
摘要: NSClassFromString是一个很有用的东西,尤其在进行iPhone toolchain的开发上。正常来说,id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];和id myObj = [[MySpecialClass alloc] init];是一样的。但是,如果你的程序中并不存在MySpecialClass这个类,下面的写法会出错,而上面的写法只是返回一个空对象而已。因此,在某些情况下,可以使用NSClassFromString来进行你不确定的类的初始化。比如在iPhone中,NSTask可 阅读全文
posted @ 2012-02-14 10:26 pengyingh 阅读(155) 评论(0) 推荐(0)
摘要: NSURL*movieURL = [NSURL URLWithString:movieStr];NSDictionary *opts = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:AVURLAssetPreferPreciseDurationAndTimingKey];AVURLAsset *urlAsset = [AVURLAsset URLAssetWithURL:movieURL options:opts];// 初始化视频媒体文件int minute = 0, second = 0;se 阅读全文
posted @ 2012-02-14 10:19 pengyingh 阅读(5254) 评论(0) 推荐(0)
摘要: 1 - (IBAction)URLFetchWithProgress:(id)sender 2 { 3 [startButton setTitle:@"Stop" forState:UIControlStateNormal]; 4 [startButton addTarget:self action:@selector(stopURLFetchWithProgress:) forControlEvents:UIControlEventTouchUpInside]; 5 NSString *tempFile = [[[[NSBundle... 阅读全文
posted @ 2012-02-14 10:01 pengyingh 阅读(1147) 评论(0) 推荐(0)
摘要: UIView *view = [[[[[UIApplication sharedApplication] windows] objectAtIndex:1] subviews] lastObject];//获得某个window的某个subView NSInteger index = 0;//用来给保存的png命名 for (UIView *subView in [view subviews]) {//遍历这个view的subViews if ([subView isKindOfClass:NSClassFromString(@"UIImageView")] || [... 阅读全文
posted @ 2012-02-14 09:50 pengyingh 阅读(4888) 评论(0) 推荐(0)
摘要: //file文件操作NSFileManager常见的NSFileManager文件的方法:-(BOOL)contentsAtPath:path 从文件中读取数据-(BOOL)createFileAtPath:path contents:(BOOL)data attributes:attr 向一个文件写入数据-(BOOL)removeFileAtPath: path handler: handler 删除一个文件-(BOOL)movePath: from toPath: to handler: handler 重命名或移动一个文件(to可能已经存在)-(BOOL)copyPa... 阅读全文
posted @ 2012-02-14 08:59 pengyingh 阅读(18949) 评论(1) 推荐(2)
摘要: 本篇介绍的方法是通过运行javascript的方法得到网页的html内容:获取所有html:NSString *lJs = @"document.documentElement.innerHTML";获取网页title:NSString *lJs2 = @"document.title";UIWebView *lWebView = [self getCurrentWebView];NSString *lHtml1 = [lWebView stringByEvaluatingJavaScriptFromString:lJs];NSString *lHtml 阅读全文
posted @ 2012-02-14 08:13 pengyingh 阅读(382) 评论(0) 推荐(0)
摘要: UIWebView是iOS最常用的SDK之一,它有一个stringByEvaluatingJavaScriptFromString方法可以将javascript嵌入页面中,通过这个方法我们可以在iOS中与UIWebView中的网页元素交互。stringByEvaluatingJavaScriptFromString 使用stringByEvaluatingJavaScriptFromString方法,需要等UIWebView中的页面加载完成之后去调用。我们在界面上拖放一个UIWebView控件。在Load中将google mobile加载到这个控件中,代码如下:- (void)viewDidL 阅读全文
posted @ 2012-02-14 08:06 pengyingh 阅读(24568) 评论(0) 推荐(1)

导航