Fork me on GitHub

2012年3月4日

摘要: iOS提供了方便的手势API(参见编写简单的手势示例:Tap),从iOS3.2开始。在这里介绍了通过手势控制视图的示例:排列和拖动视图。但是,如果要通过手势控制子视图呢?可以在手势的delegate方法中:- (void)panPiece:(UIPanGestureRecognizer *)gestureRecognizer{ NSLog(@">>gesture….."); CGPoint location=[gestureRecognizer locationInView:self.view]; UIView *hitView=[self.view h... 阅读全文
posted @ 2012-03-04 23:48 pengyingh 阅读(676) 评论(0) 推荐(0)
摘要: 在排列和拖动视图知道如何通过手势捕获视图,在如何通过手势选择到子视图知道如何捕获视图的子视图。现在有个问题,如何通过手势捕获视图内部的层(Layer),如果能,怎么捕获。捕获到Layer是很重要的,这样才能针对具体的Layer做操作,比如拖动,比如反转等。答案是肯定的,下面写个例子说明一下。示例中的图,是在视图默认Layer下的子Layer。当touch(手指拖动)该Layer以外的部分,则只打印pan …,当在该Layer上拖动时,除了打印pan..以外,还会打印catch it!这里需要用到CALayer的hitTest方法。控制器代码很简单。头文件:@interface TestGest 阅读全文
posted @ 2012-03-04 23:45 pengyingh 阅读(720) 评论(0) 推荐(0)
摘要: 这里要使用ios有关的日期时间api: NSDate,类似java里面的Date对象,是对从1970-1-1毫秒数的封装,可记录时间; NSDateFormatter,类似java中的DateFormat相关的api,用于日期对象的格式化或者字符串解析为日期对象。 首先,创建一个日期格式化对象: NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; 然后,创建了两个日期对象: NSDate *date1 阅读全文
posted @ 2012-03-04 22:08 pengyingh 阅读(576) 评论(0) 推荐(0)
摘要: 双击放大是 iPhone 的一个基本操作,第三方程序里引入这一功能的话,主要是在 scrollview 呈现一张图片或者 PDF 页面时,双击可以放大,主要代码如下 - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale { NSLog(@"%s", _cmd); CGFloat zs = scrollView.zoomScale; zs = MAX(zs, 0.1); zs = MIN(zs, 5.0); [UIView 阅读全文
posted @ 2012-03-04 22:06 pengyingh 阅读(250) 评论(0) 推荐(0)
摘要: 用到的提供soap接口的网址是:http://www.Nanonull.com/TimeService/这个页面有多个方法可以通过soap调用,页面上也有说明.如果用IE的浏览器还能看到此网页提供的wsdl文件.要做soap的webservice首先要了解一些关于webservice和soap的一些基本知识.下面几个网址可能会帮你快速入门.soap教程:http://www.w3school.com.cn/soap/index.asp使用WSDL发布WebService:http://blog.csdn.net/meiqingsong/archive/2005/04/04/336057.asp 阅读全文
posted @ 2012-03-04 22:01 pengyingh 阅读(1758) 评论(0) 推荐(0)
摘要: 一:确认网络环境3G/WIFI1. 添加源文件和framework开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息。如果没有处理它们,是不会通过Apple的审(我们的)查的。Apple 的 例程 Reachability 中介绍了取得/检测网络状态的方法。要在应用程序程序中使用Reachability,首先要完成如下两部:1.1. 添加源文件:在你的程序中使用 Reachability 只须将该例程中的 Reachability.h 和 Reachability.m 拷贝到你的工程中。1.2.添加framework:将SystemConfiguration.framework 阅读全文
posted @ 2012-03-04 21:54 pengyingh 阅读(421) 评论(0) 推荐(0)
摘要: NSTimer是一个计时器对象,方法调用在对未来的选择对象。NSThread是一个线程类。 也就是创建一个线程。NSTask类是一个过程,一种方式运行程序从您的其他程序。NSOperation是一个非常漂亮的抽象的任务。 在这个类中嵌入您的操作,你可以很容易地通过一个NSOperationQueue执行类的手段同时进行。NSRunLoop其实NSRunLoop的本质是一个消息机制的处理模式。在某种意义上摘要和适应的选择()的Unix系统调用,管理和调度输入源事件和线程计时器。每个程序运行在至少一个线程。 你能想到的每一个单独的进程中的程序执行的线程,每个其他平行进行。如果你有一些港口样的用户界 阅读全文
posted @ 2012-03-04 21:35 pengyingh 阅读(2021) 评论(0) 推荐(0)
摘要: 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 阅读全文
posted @ 2012-03-04 21:33 pengyingh 阅读(26654) 评论(2) 推荐(6)
摘要: 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 阅读全文
posted @ 2012-03-04 21:30 pengyingh 阅读(160) 评论(0) 推荐(0)
摘要: 原文:http://www.raywenderlich.com/6567/uigesturerecognizer-tutorial-in-ios-5-pinches-pans-and-moreIOS 5手势识别教程:二指拨动、拖移以及更多手势Made iniTyran,Powered ByBenna, review by iven、子龙山人。如果在你的应用程序中需要检测手势,比如点击(tap)、二指拨动 (pinch)、拖移(pan)和旋转(rotation),那么通过创建UIGestureRecognizer类来实现将十分简单。在本教程中,我们将向你展示如何在你的应用程序里通过简单地编程,添 阅读全文
posted @ 2012-03-04 21:24 pengyingh 阅读(2163) 评论(0) 推荐(0)
摘要: 我们在C/C++开发中常会用到结构体来帮助我们简单封装基本数据类型,在Objective-C中我们也可以使用结构体来完成数据类型的封装。同时,Cocoa Touch还提供了一个NSValue来帮助我们更好地在开发中使用结构体。我们可以使用NSValue来辅助我们实现一些简单数据结构的封装。比如我们定义了一个简单的结构体类型Objective-c代码typedefstruct{intid,floatheight,unsignedcharflag}MyTestStruct;此时,我们就可以使用MyTestStruct这个结构体来很容易地封装数据。如Objective-c代码MyTestStruct 阅读全文
posted @ 2012-03-04 21:22 pengyingh 阅读(202) 评论(0) 推荐(0)
摘要: 通过NSScanner读取text文档NSString *tmp;NSArray *lines; /*将文件转化为一行一行的*/lines = [[NSString stringWithContentsOfFile:@"testFileReadLines.txt"] componentsSeparatedByString:@”\n”]; NSEnumerator *nse = [lines objectEnumerator]; // 读取<>里的内容 while(tmp = [nse nextObject]) { NSString *st... 阅读全文
posted @ 2012-03-04 21:19 pengyingh 阅读(619) 评论(0) 推荐(0)
摘要: Sqlite是一个用C语言实现的小型SQL数据库引擎。它体积小巧但功能强大,对硬件资源要求很低而且性能表现卓越,非常适合于嵌入式应用环境。最近发现sqlite并不支持中文(拼音/笔画)排序,而这个功能又是我们必需的,所以花了些时间去研究。 我们知道,计算机中的每一个字符都有一个内码。在默认情况下,计算机排序时,比较两个字符的大小就是比较字符内码的大小,这对于英文来说没有问题,因为英文字母的内码是按字母顺序递增的。对于中文来说,就比较麻烦了:首先,中文的排序方式有多种,比如按内码排序、按拼音排序和按笔画排序,要通过参数指定排序的方式,否则计算机就按内码排序了。其次,汉字的内码顺序即不同于拼音.. 阅读全文
posted @ 2012-03-04 21:10 pengyingh 阅读(1836) 评论(0) 推荐(0)
摘要: 用UIImage加载图像的方法很多,最常用的是下面两种: 1、用imageNamed函数 [UIImage imageNamed:ImageName]; 2、用NSData的方式加载,例如: 1. NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:extension]; 2. NSData *image = [NSData dataWithContentsOfFile:filePath]; 3. [UIImage imageWithData:image]; 由于第一种方式要写的代... 阅读全文
posted @ 2012-03-04 20:53 pengyingh 阅读(215) 评论(0) 推荐(0)
摘要: iPhone内存管理中,涉及到malloc在堆上分配内存时,需要使用对应的free释放堆内存,而不是单纯的release相关的对象了事,如下代码: @interface MemoryTestProjViewController : UIViewController { @public NSMutableArray * memoryArray; } @end @interface MemoryTestProjItem : NSObject { @public char * innerItem; } @end 在进行初始化时为innerItem指针在堆空间上分配内存,但是要... 阅读全文
posted @ 2012-03-04 20:49 pengyingh 阅读(227) 评论(0) 推荐(0)
摘要: 我们可以使用以下方法进行编码转换 NSString* str2 = [NSString stringWithCString:str1 encoding:enc1]; 再调用NSString的cStringUsingEncoding:enc2实现从enc1到enc2的转换 但是获取enc枚举值是个难题 1. NSString.h中只定义了以下编码值 enum { NSASCIIStringEncoding = 1, /* 0..127 only */ NSNEXTSTEPStringEncoding = 2, NSJapaneseEUCStringEncoding = 3, N... 阅读全文
posted @ 2012-03-04 20:42 pengyingh 阅读(510) 评论(0) 推荐(0)
摘要: UIWebView加载Loading...两种方法 第一种方法:使用UIView and UIActivityIndicatorView //创建UIWebView WebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 44, 320, 400)]; [WebView setUserInteractionEnabled:NO]; [WebView setBackgroundColor:[UIColor clearColor]]; [WebView setDelegate:self]; [WebView setOpaque... 阅读全文
posted @ 2012-03-04 20:37 pengyingh 阅读(211) 评论(0) 推荐(0)
摘要: 一、如果想把模拟其中保存的数据在真机中显示出来,可以在 AppDelegate 里用下面方法: 模拟器保存完数据,然后进入目录:“用户名/Library/Application Support/iPhone Simulator/4.2/Applications/" 目录下,找到 p.sqlite,复制到软件的工程目录里。然后导入到工程里面,这样可以用模拟器里面保存的数据了。 - (NSManagedObjectModel *)managedObjectModel { if (managedObjectModel != nil) { return managedObjectModel; 阅读全文
posted @ 2012-03-04 19:29 pengyingh 阅读(1154) 评论(0) 推荐(0)
摘要: 在iOS开发中,如果提前释放一个指针的内存,在以后还继续使用这个指针,那么程序会立刻 crash 掉,而且很难有报错信息,我们应该利用工具去找到错误的地方,然后快速准确的定位到错误地方,及其错误原因,最后进行改进。 其实iOS控制台提供这种机制,如果你选择 debug 模式,在程序 crash 之后,在控制台输入 bt,就可以显示 crash 堆栈: Program received signal: “EXC_BAD_ACCESS”. warning: Unable to read symbols for /Developer/ios4.2.1/Platforms/iPhoneOS.pl... 阅读全文
posted @ 2012-03-04 19:23 pengyingh 阅读(418) 评论(0) 推荐(0)
摘要: 创建.plist文件并存储 NSString *errorDesc; //用来存放错误信息 NSMutableDictionary *rootObj = [NSMutableDictionary dictionaryWithCapacity:4]; //NSDictionary, NSData等文件可以直接转化为plist文件 NSDictionary *innerDict; NSString *name; Player *player; NSInteger saveIndex; for(int i = 0; i < [playerArray count]; i++) { pl... 阅读全文
posted @ 2012-03-04 19:19 pengyingh 阅读(367) 评论(0) 推荐(0)

导航