1.返回输入键盘
`- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}`
2.CGRect
CGRectFromString(<#NSString *string#>)//有字符串恢复出矩形CGRectInset(<#CGRect rect#>, <#CGFloat dx#>, <#CGFloat dy#>)//创建较小或者较大的矩形CGRectIntersectsRect(<#CGRect rect1#>, <#CGRect rect2#>)//判断两巨星是否交叉,是否重叠CGRectZero//高度和宽度为零的,位于(0,0)的矩形常量
3.隐藏状态栏
###[UIApplicationsharedApplication]setStatusBarHidden:<#(BOOL)#> withAnimation:<#(UIStatusBarAnimation)#>//隐藏状态栏
4.自动适应父视图大小
self.view.autoresizesSubviews=YES;self.view.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
5.UITableView的一些方法
这里我自己做了个测试,缩进级别设置为行号,row越大,缩进越多-(NSInteger)tableView:(UITableView*)tableView indentationLevelForRowAtIndexPath:(NSIndexPath*)indexPath{NSIntegerrow=indexPath.row;returnrow;}
6.把plist文件中的数据赋给数组
NSString*path=[[NSBundlemainBundle]pathForResource:@"States"ofType:@"plist"];NSArray*array=[NSArrayarrayWithContentsOfFile:path];
7.获取触摸的点
-(CGPoint)locationInView:(UIView*)view;-(CGPoint)previousLocationInView:(UIView*)view;
8.获取触摸的属性
@property(nonatomic,readonly)NSTimeIntervaltimestamp;@property(nonatomic,readonly)UITouchPhasephase;@property(nonatomic,readonly)NSUIntegertapCount;
9.从plist中获取数据赋给字典
NSString*plistPath=[[NSBundlemainBundle]pathForResource:@"book"ofType:@"plist"];NSDictionary*dictionary=[NSDictionarydictionaryWithContentsOfFile:plistPath];
10.NSUserDefaults注意事项
设置完了以后如果存储的东西比较重要的话,一定要同步一下[[NSUserDefaultsstandardUserDefaults]synchronize];
11.获取Documents目录
NSString*documentsDirectory=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)[0];
12.获取tmp目录
NSString*tmpPath=NSTemporaryDirectory();
13.利用Safari打开一个链接
NSURL*url=[NSURLURLWithString:@"http://baidu.com"];[[UIApplicationsharedApplication]openURL:url];
14.利用UIWebView显示pdf文件,网页等等
UIWebView *webView = [[UIWebView alloc]initWithFrame:self.view.bounds];
webView.delegate = self;
webView.scalesPageToFit = YES;
webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[webView setAllowsInlineMediaPlayback:YES];
[self.view addSubview:webView];
NSString *pdfPath = [[NSBundle mainBundle] pathForResource:@"book" ofType:@"pdf"];
NSURL *url = [NSURL fileURLWithPath:pdfPath];
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:(NSURLRequestUseProtocolCachePolicy) timeoutInterval:5];
15.UIWebView和html的简单交互
myWebView=[[UIWebViewalloc]initWithFrame:self.view.bounds];[myWebView loadRequest:[NSURLRequestrequestWithURL:[NSURLURLWithString:@"http://www.baidu.com"]]];NSError*error;NSString*errorString=[NSStringstringWithFormat:@"AnError Occurred;
%@",error];[myWebView loadHTMLString:errorString baseURL:nil];//页面跳转了以后,停止载入-(void)viewWillDisappear:(BOOL)animated{if(myWebView.isLoading){[myWebView stopLoading];}myWebView.delegate=nil;[UIApplicationsharedApplication].networkActivityIndicatorVisible=NO;}
16.汉字转码
NSString*oriString=@"\u67aa\u738b";NSString*escapedString=[oriString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
17.处理键盘通知
先注册通知,然后实现具体当键盘弹出来要做什么,键盘收起来要做什么-(void)registerForKeyboardNotifications{keyboardShown=NO;//标记当前键盘是没有显示的[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(keyboardWasShown:)name:UIKeyboardWillShowNotificationobject:nil];[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(keyboardWasHidden:)name:UIKeyboardDidHideNotificationobject:nil];}//键盘显示要做什么-(void)keyboardWasShown:(NSNotification*)notification{if(keyboardShown){return;}NSDictionary*info=[notification userInfo];NSValue*aValue=[info objectForKey:UIKeyboardFrameBeginUserInfoKey];CGSizekeyboardSize=[aValueCGRectValue].size;CGRectviewFrame=scrollView.frame;viewFrame.size.height=keyboardSize.height;CGRecttextFieldRect=activeField.frame;[scrollView scrollRectToVisible:textFieldRect animated:YES];keyboardShown=YES;}-(void)keyboardWasHidden:(NSNotification*)notification{NSDictionary*info=[notification userInfo];NSValue*aValue=[info objectForKey:UIKeyboardFrameEndUserInfoKey];CGSizekeyboardSize=[aValueCGRectValue].size;CGRectviewFrame=scrollView.frame;viewFrame.size.height+=keyboardSize.height;scrollView.frame=viewFrame;keyboardShown=NO;}
18.点击键盘的next按钮,在不同的textField之间换行
-(BOOL)textFieldShouldReturn:(UITextField*)textField{if([textField returnKeyType]!=UIReturnKeyDone){NSIntegernextTag=[textField tag]+1;UIView*nextTextField=[self.tableView viewWithTag:nextTag];[nextTextField becomeFirstResponder];}else{[textField resignFirstResponder];}returnYES;}
19.设置日期格式
dateFormatter=[[NSDateFormatteralloc]init];dateFormatter.locale=[NSLocalecurrentLocale];dateFormatter.calendar=[NSCalendarautoupdatingCurrentCalendar];dateFormatter.timeZone=[NSTimeZonedefaultTimeZone];dateFormatter.dateStyle=NSDateFormatterShortStyle;NSLog(@"%@",[dateFormatter stringFromDate:[NSDatedate]]);
20.加载大量图片的时候,可以使用
NSString*imagePath=[[NSBundlemainBundle]pathForResource:@"icon"ofType:@"png"];UIImage*myImage=[UIImageimageWithContentsOfFile:imagePath];
21.有时候在iPhone游戏中,既要播放背景音乐,同时又要播放比如枪的开火音效。
NSString*musicFilePath=[[NSBundlemainBundle]pathForResource:@"xx"ofType:@"wav"];NSURL*musicURL=[NSURL fileURLWithPath:musicFilePath];AVAudioPlayer*musicPlayer=[[AVAudioPlayeralloc]initWithContentsOfURL:musicURL error:nil];[musicPlayer prepareToPlay];musicPlayer.volume=1;musicPlayer.numberOfLoops=-1;//-1表示一直循环
22.从通讯录中读取电话号码,去掉数字之间的-
NSString*originalString=@"(123)123123abc";NSMutableString*strippedString=[NSMutableStringstringWithCapacity:originalString.length];NSScanner*scanner=[NSScannerscannerWithString:originalString];NSCharacterSet*numbers=[NSCharacterSetcharacterSetWithCharactersInString:@"0123456789"];while([scanner isAtEnd]==NO){NSString*buffer;if([scanner scanCharactersFromSet:numbers intoString:&buffer]){[strippedString appendString:buffer];}else{scanner.scanLocation=[scanner scanLocation]+1;}}NSLog(@"%@",strippedString);
23.正则判断:字符串只包含字母和数字
NSString*myString=@"Letter1234";NSString*regex=@"[a-z][A-Z][0-9]";NSPredicate*predicate=[NSPredicatepredicateWithFormat:@"SELF MATCHES %@",regex];if([predicate evaluateWithObject:myString]){//implement}
24.设置UITableView的滚动条颜色
self.tableView.indicatorStyle=UIScrollViewIndicatorStyleWhite;
网络编程 开发web等网络应用程序的时候,需要确认网络环境,连接情况等信息。如果没有处理它们,是不会通过apple的审查的。 系统自带的网络检查是原生的,AFNetworking也为我们添加了相关检测机制,所以这个直接在介绍AFNetworking的时候详解吧。
25.使用NSURLConnection下载数据
1.创建对象NSMutableURLRequest*request=[NSMutableURLRequestrequestWithURL:[NSURLURLWithString:@"http://www.baidu.com"]];[NSURLConnectionconnectionWithRequest:requestdelegate:self];2.NSURLConnectiondelegate委托方法-(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response{}-(void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data{}-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error{}-(void)connectionDidFinishLoading:(NSURLConnection*)connection{}3.实现委托方法-(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response{self.receiveData.length=0;//先清空数据}-(void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data{[self.receiveData appendData:data];}-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error{//错误处理}-(void)connectionDidFinishLoading:(NSURLConnection*)connection{[UIApplicationsharedApplication].networkActivityIndicatorVisible=NO;NSString*returnString=[[NSStringalloc]initWithData:self.receiveData encoding:NSUTF8StringEncoding];firstTimeDownloaded=YES;}
iOS的动画以及自定义图形,开个专栏总结。
26.隐藏状态栏
[UIApplicationsharedApplication].statusBarHidden=YES;
27..m文件与.mm文件的区别
.m文件是objective-c文件.mm文件相当于c++或者c文件
Safari其实没有把内存的缓存写到存储卡上
28.读取一般性文件
-(void)readFromTXT{NSString*tmp;NSArray*lines;//将文件转化为一行一行的lines=[[NSStringstringWithContentsOfFile:@"testFileReadLines.txt"]componentsSeparatedByString:@"\n"];NSEnumerator*nse=[lines objectEnumerator];//读取<>里的内容while(tmp==[nse nextObject]){NSString*stringBetweenBrackets=nil;NSScanner*scanner=[NSScannerscannerWithString:tmp];[scanner scanUpToString:@"<"intoString:nil];[scanner scanString:@"<"intoString:nil];[scanner scanUpToString:@">"intoString:&stringBetweenBrackets];NSLog(@"%@",[stringBetweenBrackets description]);}}
29.隐藏UINavigationBar
[self.navigationController setNavigationBarHidden:YES animated:YES];
30.调用电话,短信,邮件
[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"mailto:apple@mac.com?Subject=hello"]];sms://调用短信tel://调用电话itms://打开MobileStore.app
31.获取版本信息
UIDevice*myDevice=[UIDevicecurrentDevice];NSString*systemVersion=myDevice.systemVersion;
32.UIWebView的使用
webView.delegate = self;
(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = request.URL;
NSString *urlStirng = url.absoluteString;
NSLog(@"%@",urlStirng);
return YES;
}
UIButton的title和image不能同时显示UINavigationItem也是
33.NSNotificationCenter带参数发送
MPMoviePlayerController*theMovie=[[MPMoviePlayerControlleralloc]initWithContentURL:[NSURL fileURLWithPath:moviePath]];[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(myMovieFinishedCallback:)name:MPMoviePlayerPlaybackDidFinishNotificationobject:theMovie];[theMovie play];-(void)myMovieFinishedCallback:(NSNotification*)aNotification{MPMoviePlayerController*theMovie=[aNotificationobject];[[NSNotificationCenterdefaultCenter]removeObserver:selfname:MPMoviePlayerPlaybackDidFinishNotificationobject:theMovie];}
34.延迟一段时间执行某个函数
[selfperformSelector:@selector(dismissModal)withObject:selfafterDelay:1.0];
35.用NSDateFormatter调整时间格式代码
NSDateFormatter*dateFormatter=[[NSDateFormatteralloc]init];dateFormatter.dateFormat=@"yyyy-MM-dd HH:mm:ss";NSString*currentDateStr=[dateFormatter stringFromDate:[NSDatedate]];
36.UIView设置成圆角的方法
mainView.layer.cornerRadius=6;mainView.layer.masksToBounds=YES;
Objective-C 内存管理
一个对象可以有一个或多个拥有者
当它一个拥有者都没有的时候,它就会被回收
如果想保留一个对象不被回收,你就必须成为它的拥有者
关键字
alloc 为对象分配内存,计数设为1,并返回此对象。
copy 复制一个对象,此对象计数为1,返回此对象。你将成为此克隆对象的拥有者。
retain 对象计数+1,并成为次对象的拥有者。
release 对象计数-1,并丢掉此对象。
autorelease 在未来的某一个时刻,对象计数-1。并在未来的某个时间放弃此对象。
原则
一个代码块内要确保copy,alloc 和 retain 的使用数量与 release 和 autorelease 的数量相等。
在使用以 alloc 或 new 开头或包含 copy 的方法,或 retain 一个对象时,你将会编程它的拥有者。
实现 dealloc 方法,这是系统当 retain -> 0 的时候,自动调用的。手动调用会引起 retain count 计数错误(多一次的 release)。
iPhone 更改键盘右下角按键的 type
SearchBar*mySearchBar=[[UISearchBaralloc]init];mySearchBar.frame=CGRectMake(0,0,self.view.bounds.size.width,44);mySearchBar.placeholder=@"placeholderString";mySearchBar.delegate=self;[self.view addSubview:mySearchBar];UITextField*searchField=[[mySearchBar subviews]lastObject];searchField.returnKeyType=UIReturnKeyDone;
总结
不积跬步无以至千里,不积小流无以成江海。