記錄各種iOS開發(fā)技巧

1.返回輸入鍵盤

`- (BOOL)textFieldShouldReturn:(UITextField *)textField {

[textField resignFirstResponder];

return YES;

}`

2.CGRect

CGRectFromString(<#NSString *string#>)//有字符串恢復出矩形CGRectInset(<#CGRect rect#>, <#CGFloat dx#>, <#CGFloat dy#>)//創(chuàng)建較小或者較大的矩形CGRectIntersectsRect(<#CGRect rect1#>, <#CGRect rect2#>)//判斷兩巨星是否交叉,是否重疊CGRectZero//高度和寬度為零的,位于(0邻悬,0)的矩形常量

3.隱藏狀態(tài)欄

###[UIApplicationsharedApplication]setStatusBarHidden:<#(BOOL)#> withAnimation:<#(UIStatusBarAnimation)#>//隱藏狀態(tài)欄

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文件中的數(shù)據(jù)賦給數(shù)組

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中獲取數(shù)據(jù)賦給字典

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文件,網(wǎng)頁等等

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.處理鍵盤通知

先注冊通知谨读,然后實現(xiàn)具體當鍵盤彈出來要做什么,鍵盤收起來要做什么-(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表示一直循環(huán)

22.從通訊錄中讀取電話號碼,去掉數(shù)字之間的-

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.正則判斷:字符串只包含字母和數(shù)字

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;

網(wǎng)絡編程 開發(fā)web等網(wǎng)絡應用程序的時候玫膀,需要確認網(wǎng)絡環(huán)境矛缨,連接情況等信息。如果沒有處理它們帖旨,是不會通過apple的審查的箕昭。 系統(tǒng)自帶的網(wǎng)絡檢查是原生的,AFNetworking也為我們添加了相關檢測機制碉就,所以這個直接在介紹AFNetworking的時候詳解吧盟广。

25.使用NSURLConnection下載數(shù)據(jù)

1.創(chuàng)建對象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.實現(xiàn)委托方法-(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response{self.receiveData.length=0;//先清空數(shù)據(jù)}-(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.隱藏狀態(tài)欄

[UIApplicationsharedApplication].statusBarHidden=YES;

27..m文件與.mm文件的區(qū)別

.m文件是objective-c文件.mm文件相當于c++或者c文件

Safari其實沒有把內(nèi)存的緩存寫到存儲卡上

28.讀取一般性文件

-(void)readFromTXT{NSString*tmp;NSArray*lines;//將文件轉化為一行一行的lines=[[NSStringstringWithContentsOfFile:@"testFileReadLines.txt"]componentsSeparatedByString:@"\n"];NSEnumerator*nse=[lines objectEnumerator];//讀取<>里的內(nèi)容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.調(diào)用電話筋量,短信,郵件

[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"mailto:apple@mac.com?Subject=hello"]];sms://調(diào)用短信tel://調(diào)用電話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帶參數(shù)發(fā)送

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.延遲一段時間執(zhí)行某個函數(shù)

[selfperformSelector:@selector(dismissModal)withObject:selfafterDelay:1.0];

35.用NSDateFormatter調(diào)整時間格式代碼

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 內(nèi)存管理

一個對象可以有一個或多個擁有者

當它一個擁有者都沒有的時候碉熄,它就會被回收

如果想保留一個對象不被回收桨武,你就必須成為它的擁有者

關鍵字

alloc 為對象分配內(nèi)存,計數(shù)設為1锈津,并返回此對象呀酸。

copy 復制一個對象,此對象計數(shù)為1琼梆,返回此對象性誉。你將成為此克隆對象的擁有者。

retain 對象計數(shù)+1茎杂,并成為次對象的擁有者错览。

release 對象計數(shù)-1,并丟掉此對象煌往。

autorelease 在未來的某一個時刻倾哺,對象計數(shù)-1。并在未來的某個時間放棄此對象。

原則

一個代碼塊內(nèi)要確保copy羞海,alloc 和 retain 的使用數(shù)量與 release 和 autorelease 的數(shù)量相等忌愚。

在使用以 alloc 或 new 開頭或包含 copy 的方法,或 retain 一個對象時却邓,你將會編程它的擁有者硕糊。

實現(xiàn) dealloc 方法,這是系統(tǒng)當 retain -> 0 的時候申尤,自動調(diào)用的癌幕。手動調(diào)用會引起 retain count 計數(shù)錯誤(多一次的 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;

總結

不積跬步無以至千里昧穿,不積小流無以成江海。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末橙喘,一起剝皮案震驚了整個濱河市时鸵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厅瞎,老刑警劉巖饰潜,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異和簸,居然都是意外死亡彭雾,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門锁保,熙熙樓的掌柜王于貴愁眉苦臉地迎上來薯酝,“玉大人,你說我怎么就攤上這事爽柒∥獠ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵浩村,是天一觀的道長做葵。 經(jīng)常有香客問我,道長心墅,這世上最難降的妖魔是什么酿矢? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮怎燥,結果婚禮上瘫筐,老公的妹妹穿的比我還像新娘。我一直安慰自己刺覆,他們只是感情好严肪,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般驳糯。 火紅的嫁衣襯著肌膚如雪篇梭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天酝枢,我揣著相機與錄音恬偷,去河邊找鬼。 笑死帘睦,一個胖子當著我的面吹牛袍患,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播竣付,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼诡延,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了古胆?” 一聲冷哼從身側響起肆良,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逸绎,沒想到半個月后惹恃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡棺牧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年巫糙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颊乘。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡参淹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出疲牵,到底是詐尸還是另有隱情承二,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布纲爸,位于F島的核電站亥鸠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏识啦。R本人自食惡果不足惜负蚊,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望颓哮。 院中可真熱鬧家妆,春花似錦、人聲如沸冕茅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至哨坪,卻和暖如春庸疾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背当编。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工届慈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人忿偷。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓金顿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鲤桥。 傳聞我的和親對象是個殘疾皇子揍拆,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • iOS開發(fā)系列--網(wǎng)絡開發(fā) 概覽 大部分應用程序都或多或少會牽扯到網(wǎng)絡開發(fā),例如說新浪微博茶凳、微信等礁凡,這些應用本身可...
    lichengjin閱讀 3,641評論 2 7
  • iphone開發(fā)筆記 退回輸入鍵盤 - (BOOL) textFieldShouldReturn:(id)text...
    愛易寒曲易散閱讀 618評論 0 1
  • 我高二的時候,周啟航念初二慧妄。 我們在大不列顛度過了不可描述的一個月,現(xiàn)在想起來剪芍,我還記得大家一起含淚吃著難吃到天上...
    不沉大師傅閱讀 223評論 0 1
  • 我們有多久沒有去看過星星塞淹? 仿佛很久以來 我們已漸習慣: 倚著昂貴的原木桌椅 就著隱約的燈光 品茶,或酒 談論對自...
    浣秋閱讀 337評論 2 0
  • 第一次在簡書上寫東西罪裹,好緊張饱普;文筆那么差勁,會不會被罵状共,會不會被鄙視套耕,好緊張啊……唉,豁出去了峡继,管他咯冯袍,誰在乎呢,...
    嶺南七哥閱讀 173評論 0 0