閱讀558 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《iOS6 application development》學習之路:No.1

雖然開始學習iOS的開發是在XCode5.1之後,而且默認的部署環境也都是iOS7的了,但是舍不得越獄的我的小4,況且也帶不動iOS7,不過還好找到了可以把程序部署到我的iOS6係統上的方法https://blog.csdn.net/u011156012/article/details/30543471

入手《iOS6 Application Development》這本書已經1周了,感覺看起來很舒服,從簡單到複雜,循序漸進,不斷深入學習iOS開發的種種。今天進入到第11章:實現多場景和彈出框。總算進入到真正有內容的章節了,開始做讀書筆記吧!

先把這本書前10章中感覺對我來說有用的部分做個記錄吧:

1. 首先需要加入Apple開發人員計劃。

這個很簡單,按照網站的提示,輸入自己的Apple賬號和密碼就行了,如果不付費(個人和公司兩種),隻能把程序部署在模擬器上,還好公司有付費的賬戶,找同事邀請我加入了公司的群組,然後再連上自己的設備部署的時候,按照係統提示一步步來就好了。輕鬆加隨意。

2. 雖然買的書是講iOS6的,但是其實內容都大同小異,而且SDK的改變也都是一些小細節方麵的,並沒有很大的改動,所以對著6學7的開發,一點問題也沒有。還有個原因是目前iOS7的中文翻譯似乎還沒有出,而想海淘一本原版的書需要花費1個月,學習心切如我就在網上買了一本6的。

3. 關於Objective c

雖然對c和c++已經很熟悉了,但是剛開始用OC的時候還是有些別扭,可能後期用多了就習慣了吧。不是很理解[]什麼時候用,感覺似乎是當調用對象的成員時用. 而調用對象的方法的時候需要用[]了。不知道對不對。再閑聊下Apple最近發布的Swift語言,想起來1年前看了一個視頻,講的是Apple公司的一位coding大牛,在講述可視化開發,當時讓我特別震撼,原來開發還可以這樣進行,1年後swift就橫空出世了,感覺語法和python有些相似,不過對於掌握了c和c++這種基礎語言的童鞋來說,學習新的語言應該不是什麼特別難的事。

4.關於iOS的技術層:

iOS從底層到最高層分別由: 核心OS層、核心服務層、多媒體層和 Cocoa Touch層組成。

Cocoa Touch是一係列的軟件框架和運行環境用於創建iOS應用程序,包含數百個類,可用於管理從按鈕到統一資源定位符(URL)到操作照片和進行臉部識別的一切。總之,Cocoa Touch就是最上層的,用戶能直接與之交互的部分。與之對應的Cocoa,是用於開發Mac OS X的框架,加了個Touch可以理解主要是用於觸摸設備。 

Cocoa Touch包括很多框架,其中最核心的又是UIKit。基本上一個簡單程序用到的所有都能在UIKit中找到。除此以外,還有MapKit,Game Kit, Message UI/Address Book UI/Event Kit UI以及用於廣告管理的iAd。

5. 第6章到第10章分別介紹了最常用的一些控件,例如label,button,textfield,image view等等。

5.1 關於Data Detector

在Textview的屬性中如果選中了Detector,則可以對一些特殊字符做自動識別,例如電話號碼,郵件,address等等,不要濫用,應為我也在使用中有發現,有時候就是想用到數字,卻總是被識別成電話號碼。

5.2 對象的上下關係

就是那個對象在前哪個在後。在書中p153頁,提到可以在Editor>Arrange>Send to Back來把他放到後麵,但是不知道為何我的界麵中這些都是灰色的不可用的,還好SDK還提供了別的方法,在大綱區域,越靠下的控件同時是越靠前的,也就是說對象是從上(後)到下(前)的順序疊放的。

這裏提到了把一個充滿整個屏幕的button放到最後麵,這樣用戶點擊其他區域的時候,就可以做返回操作了。而我們除了寫上正確的接口文件,還需要把這個“很大”的按鈕放到大綱區域的最上麵。

隱藏鍵盤的方法,就是當點擊“很大”的按鈕時執行 [self.thekeyboard resignFirstResponder],退出第一響應就好了!

6. 得到float 0.x怎麼辦呢?  這個函數也許有用(float)(rand()%11+1)/10;

7. UIWebView的loadRequest不能直接處理NSURL對象,而接受一個NSURLRequest對象。

為了解決這個問題,我們使用NSURLRequest的類方法requestWithURL:

NSURL *imageURL;
imageURL = [[NSString alloc] initWithFormat:@"https://www.ssfsdfs.com"];
[self.flowerview loadRequest:[NSURLRequest requestWithURL: imageURL]];

8. 確定被按下的按鈕時,可以通過索引或者標題內容:

-(void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
//    NSString *buttonTitle = [actionSheet buttonTitleAtIndex:buttonIndex];
//    if([buttonTitle isEqualToString:@"Destory"]){
//        self.userOutput.text = @"Clicked 'destory'";
//    }else if([buttonTitle isEqualToString:@"Negotiate"]){
//        self.userOutput.text = @"Clicked 'Negotiate!'";
//    }else if([buttonTitle isEqualToString:@"Compromise"]){
//        self.userOutput.text = @"Clicked 'Compromise'";
//    }else if([buttonTitle isEqualToString:@"HAHA"]){
//        self.userOutput.text = @"Clicked 'HAHA'";
//    }else if([buttonTitle isEqualToString:@"OMG"]){
//        self.userOutput.text = @"Clicked 'OMG'";
//    }else{
//        self.userOutput.text = @"Clicked 'Cancel'";
//    }
    if(buttonIndex == 0){
        self.userOutput.text = @"Clicked 'destory'";
    }else if(buttonIndex == 1){
        self.userOutput.text = @"Clicked 'Negotiate!'";
    }else if(buttonIndex == 2){
        self.userOutput.text = @"Clicked 'Compromise!'";
    }else if(buttonIndex == 3){
        self.userOutput.text = @"Clicked 'HAHA'";
    }else if(buttonIndex == 4){
        self.userOutput.text = @"Clicked 'OMG'";
    }else{
        self.userOutput.text = @"Clicked 'cancel'";
    }
}

注釋掉的是按照標題內容來確定,也可以通過索引來實現,索引從0開始,這樣當動態添加按鈕時,也可以通過索引來得到了。

10.播放聲音?

沒問題,隻不過需要添加框架AudioToolBox。

選擇項目的頂級編組,在General區域最下方找到Linked Frameworks and Libraries,添加, 選擇 AudioToolBox.framework。

下麵3組函數分別執行 播放聲音、播放聲音+震動和隻震動了。

- (IBAction)doSound:(id)sender {
    SystemSoundID soundID;
    NSString *soundFile = [[NSBundle mainBundle]
                           pathForResource:@"soundeffect" ofType:@"wav"];
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)
                                     [NSURL fileURLWithPath:soundFile], &soundID);
    AudioServicesPlaySystemSound(soundID);
}

- (IBAction)doAlertSound:(id)sender {
    SystemSoundID soundID;
    NSString *soundFile = [[NSBundle mainBundle]
                           pathForResource:@"alertsound" ofType:@"wav"];
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)
                                     [NSURL fileURLWithPath:soundFile], &soundID);
    AudioServicesPlayAlertSound(soundID);
}

- (IBAction)doVibration:(id)sender {
    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}


最後更新:2017-04-03 07:57:08

  上一篇:go 解決PHP中使用header輸出頭報錯問題
  下一篇:go 曾國藩的拙式領導力