iOS 6實(shí)踐指南(iOS 6 In Practice)是一本非常經(jīng)典的ios6開發(fā)書籍,該書籍內(nèi)容完整詳細(xì)、全面,非常適合初學(xué)ios開發(fā)的朋友們使用,該書籍中的案例都比較實(shí)際,具有使用性,在這本書中讀者們可以了解簡單工程的建立流程,有需要的朋友們就趕緊來下載查閱吧!
iOS 6實(shí)踐指南(iOS 6 In Practice)內(nèi)容截圖
iOS 6實(shí)踐指南(iOS 6 In Practice)內(nèi)容節(jié)選
第一章、開始 iOS 開發(fā)……………………………………………………………………………3
第二章、 創(chuàng)建一個(gè) iOS應(yīng)用…………………………………………………………………………20
第三章、通過教你制作一個(gè)上架應(yīng)用 PicDecor 來教你使用 view controllers 以及創(chuàng)建展示圖
片………………………………………………………………………………………………31
第 四 章 、 通 過 教 你 制 作 一 個(gè) 上 架 應(yīng) 用 Dial4 來 學(xué) 習(xí) 訪 問 地 址 簿 / 聯(lián) 系 人 列
表………………………………………………………………………………………………97
第 五 章 、 通 過 教 你 制 作 一 個(gè) 上 架 應(yīng) 用 WhereISMyCar 來 學(xué) 習(xí) MapKit 和 照 相 機(jī) 功
能……………………………………………………………………………………………132
第六章、通過教你制作一個(gè)上架應(yīng)用 TimeDown 來學(xué)習(xí)設(shè)置 ,音頻,以及晃動(dòng)檢
測………………………………………………………………………………………174
第七章、通過教你制作一個(gè)上架應(yīng)用 Playlist 來學(xué)習(xí) CoreData, 獲取本地音樂并播
放………………………………………………………………………………………205
第八章、通過教你制作一個(gè)上架應(yīng)用石頭,剪子,布來學(xué)習(xí)推送通知和應(yīng)用內(nèi)置購
買…………………………………………………………………………………………240
第 九 章 、 給 石 頭 , 剪 子 , 布 游 戲 添 加 Game Center 排 行 榜 以 及 成
就……………………………………………………………………………………………280
第十章、通過教你制作一個(gè)上架應(yīng)用 MusicSearch 來學(xué)習(xí) iTunes API,iPad 適配,以及
iAd……………………………………………………………………………………………315
第十一章、通過制作一個(gè)上架應(yīng)用 MeetSocial 學(xué)習(xí)集合視圖,社交功能,提醒事項(xiàng)以及應(yīng)用狀
態(tài)存儲(chǔ)……………………………………………………………………………………………351
……
Organizer 可以通過使用 commard 鍵+點(diǎn)擊代碼中的文本, 可以組織和和文本相關(guān)的文件。同時(shí),Organizer 可以讓你訪問有用的文件比如說“Apple Human InterfaceGuidelines《蘋果人機(jī)交互指南》 ”以及“Learning Objective-C:A Primer“ 《學(xué)習(xí)Objective-C,入門指導(dǎo)》 ” 。這兩個(gè)文件都推薦你閱讀。
現(xiàn)在已經(jīng)大概了解了 Xcode 和它的開収環(huán)境,讓我們來創(chuàng)建一個(gè)應(yīng)用吧!
1.3Hello World 應(yīng)用
作為探索 Xcode 以及了解 iOS 開収的一種方式,讓我們先來創(chuàng)建一個(gè)基礎(chǔ)的應(yīng)用。這丌需要花費(fèi)很多工作,但是可以幫劣你了解創(chuàng)建應(yīng)用的基礎(chǔ)。
首先,你可以創(chuàng)建一個(gè)新的工程,創(chuàng)建工程包括幾個(gè)關(guān)鍵的步驟。然后你可以給應(yīng)用創(chuàng)建 UI,然后運(yùn)行應(yīng)用。
1.3.1 創(chuàng)建一個(gè)新的工程
打開 Xcode,選擇 Create a New Project(見圖 1.8) 。
閱讀iOS 6實(shí)踐指南(iOS 6 In Practice)心得體會(huì)
第四章介紹了一個(gè)快速搜索聯(lián)系人的應(yīng)用Dial4,下面是學(xué)到的知識(shí)點(diǎn):
1.使用地址簿
幾乎所有地址簿中的數(shù)據(jù)都是CFTypeRef的子類,而且要使用這些數(shù)據(jù)的方法也和以前不同。
需要添加的框架:AddressBook.framework
包含頭文件:#import
2.獲取地址簿的引用:ABAddressBookRef addressBook = ABAddressBookCreate();3.判斷用戶是否允許使用地址簿中的內(nèi)容,此方法中包含了iOS6中的新特性,書中的源代碼在注釋掉這個(gè)方法后,在iOS5.1的模擬器上可以運(yùn)行了。對允許使用地址簿資料的授權(quán)和對允許使用相冊、日歷、提醒事頃的授權(quán)都是在iOS6中才加入的,所以要注意向前和向后兼容性。
ABAuthorizationStatus authStatus =
ABAddressBookGetAuthorizationStatus();
if (authStatus != kABAuthorizationStatusAuthorized){
ABAddressBookRequestAccessWithCompletion
(addressBook, ^(bool granted, CFErrorRef error){
dispatch_async(dispatch_get_main_queue(), ^{if (error)
NSLog(@"Error: %@", (__bridge NSError *)error);else if (!granted) {
UIAlertView *av = [[UIAlertView alloc]
initWithTitle:@"Authorization Denied"
message:@"Set permissions in Settings>General>Privacy."delegate:nil
cancelButtonTitle:nil
otherButtonTitles:@"OK", nil];
[av show];
}
else
{
ABAddressBookRevert(addressBook);
myContacts = [NSArray arrayWithArray:
(__bridge_transfer NSArray*)
ABAddressBookCopyArrayOfAllPeople(addressBook)];[tableView reloadData];
}
});
});
}
return authStatus == kABAuthorizationStatusAuthorized;如果返回值為kABAuthorizationStatusAuthorized就表示用戶已經(jīng)授權(quán)允許了,返回的值可以作為if的條件進(jìn)行判斷。
4.從地址簿中獲取聯(lián)系人數(shù)據(jù)并存入數(shù)組里
NSArray *myContacts = [NSArray arrayWithArray:(__bridge_transfer NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook)];5.從存聯(lián)系人數(shù)組中讀取數(shù)據(jù)
5.1,讀取聯(lián)系人頭像圖片:
NSData *d = (__bridge_transfer NSData*)ABPersonCopyImageData(objc_unretainedPointer([myContacts objectAtIndex:indexPath.row]));if (nil != d)
{
UIImage *i = [UIImage imageWithData:d];
[[cell imageView] setImage:i];
}
5.2獲取地址簿中以組形式存在的數(shù)據(jù)
像電話號碼和電子郵件這種數(shù)據(jù)都是以組形式存在的,因?yàn)橐粋(gè)聯(lián)系人通常都有超過一個(gè)電話號碼戒者電子郵箱。我們必項(xiàng)以組的形式來獲取這些數(shù)據(jù)。當(dāng)獲得了其中一組數(shù)據(jù)的時(shí)候,可以用編號來獲取其中的任何一頃數(shù)據(jù)。
要獲取這些以組形式存在的數(shù)據(jù),首先要將他們復(fù)制到ABMultiValueRef中(請看下面的代碼中的第三個(gè)注明)。當(dāng)把組形式的數(shù)據(jù)復(fù)制到ABMultiValueRef后,就可以把其中任何一頃數(shù)據(jù)用相應(yīng)編號復(fù)制出來了。使用ABMultiValueGetCount方法可以知道有多少個(gè)頃目在一個(gè)組里面。
-(NSString*)personDisplayText:(ABRecordRef)person{
// ABRecordRef person = [[myContacts objectAtIndex:rowIndex] retain];NSString *firstName = (__bridge_transfer NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);NSString *lastName = (__bridge_transfer NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty);NSString *fullName = nil;
if (firstName || lastName)
{
if (ABPersonGetCompositeNameFormat() == kABPersonCompositeNameFormatFirstNameFirst)fullName = [NSString stringWithFormat:@"%@ %@", firstName, lastName];else
fullName = [NSString stringWithFormat:@"%@, %@", lastName, firstName];}
else
{
ABMultiValueRef phoneNumbers = ABRecordCopyValue(person,kABPersonPhoneProperty);
if (phoneNumbers && ABMultiValueGetCount(phoneNumbers) > 0){
fullName = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);CFRelease(phoneNumbers);
}
}
// CFRelease(person);
return fullName;
}
除了電話號碼外,另外兩個(gè)數(shù)據(jù)也是以組存在的,那就是地址和電子郵箱,它們對應(yīng)的值分別是kABPersonEmailProperty和kABPersonAddressProperty。這些值也附帶了相應(yīng)標(biāo)識(shí),比如家庭、工作、戒者其他什么的。如果需要其中特定的某一個(gè),可以對ABMultiValueRef使用ABMultiValueCopyLabelAtIndex方法,只需要傳入編號,就會(huì)返回相應(yīng)位置數(shù)據(jù)的標(biāo)識(shí)。而這個(gè)標(biāo)識(shí)可以用來和kABWorkLabel、kABHomeLabel以及kABOtherLabel迚行比較(請看下面的代碼)。當(dāng)然這個(gè)例子的主要目的是為了教你如何從組數(shù)據(jù)中找出某頃數(shù)據(jù),在這個(gè)應(yīng)用中用丌著。
從幾個(gè)不同的電子郵箱地址中找出工作的電子郵箱地址NSString *retVal = nil;
ABRecordRef person = [myContacts objectAtIndex:rowIndex];ABMultiValueRef vals =
ABRecordCopyValue(person, kABPersonEmailProperty);if (ABMultiValueGetCount(vals) > 0)
{
CFIndex i;
for (i=0; i < ABMultiValueGetCount(vals); i++){
CFStringRef label = ABMultiValueCopyLabelAtIndex(vals, i);if (retVal == nil ||
CFStringCompare(label, kABWorkLabel, 0)
== kCFCompareEqualTo) //考慮用戶對姓和名頇序的偏好{
} }
CFStringRef val = ABMultiValueCopyValueAtIndex(vals, i);retVal = (NSString *)val;
CFRelease(val);
}
CFRelease(label);
CFRelease(vals);
return retVal;
從程序角度來說,用iPhone打電話是超級簡單的事情。有好幾個(gè)URL都是SDK自勱支持的。比如tel:是用來打電話的,mailto:是用來發(fā)送郵件的,sms:是用來發(fā)送短信的,http:是用來訪問網(wǎng)站的,map:是用來打開地圖的。NSString *url = [NSString stringWithFormat:@"tel:%@", phoneNum]; [[UIApplicationsharedApplication] openURL:[NSURL URLWithString:url]];取出電話號碼等信息:
-(void)handleRowSelection:(int)rowIndex
{
ABRecordRef person = objc_unretainedPointer([myContacts objectAtIndex:rowIndex]);ABMultiValueRef phoneNumbers = ABRecordCopyValue(person,kABPersonPhoneProperty);
if (ABMultiValueGetCount(phoneNumbers) == 1)[self callThisNumber:(__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0)];else if (ABMultiValueGetCount(phoneNumbers) > 1){
UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Pick A Number"message:@"Which number would you like to call?"delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:nil];
for (int i=0; i < ABMultiValueGetCount(phoneNumbers); i++)[av addButtonWithTitle:(__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, i)];[av show];
}
if (phoneNumbers)
CFRelease(phoneNumbers);
}
更多免費(fèi)文檔資料下載,敬請關(guān)注東坡下載站!
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版