1. 在iOS中顯示文本內容 <- iOS文本編程指南
在iOS中的文本系統在保持易用性的同時提供大量強大的功能。UIKit框架包括了多個高級類來管理文本的顯示和輸入。UIKit還包括了用於顯示HTML、CSS、以及基於JavaScript的web內容的類。
文本對象在一定范圍的字體、樣式、和尺寸中,顯示樣式化、格式化的文本。UIKit框架提供三種主要的類來在app的用戶界面中顯示文本內容:
盡管這些類確實能支持顯示任意數量的文本,但是標簽和文本欄位還是經常被用於顯示相關的少量文本,通常是一個單獨行。另一方面,文本視圖用來顯示大量的文本。
文本視圖對象,由UITextView類創建,顯示格式化為段落、列、以及頁的文本,具有精細排版的所有特徵,例如字距、連字、復雜的換行、以及對齊。這些排版服務通過被稱為Text Kit的底層技術(一種強大的布局引擎,易用且可擴展)提供給UITextView。更多關於Text Kit的信息,參見「使用Text Kit來繪制和管理文本」。
圖1-1 顯示了一個在屏幕上顯示主要文本對象的例子。左圖顯示多種不同的文本欄位樣式,右圖顯示一個單獨的文本視圖。顯示在背景上的是鑲嵌在表單元格中的UILabel對象,用於顯示不同視圖。
圖 1-1 在UICatalog應用中的文本類
當使用可編輯的文本欄位和文本視圖時,你應該始終提供委託對象來管理編輯會話。文本視圖發送多中不同的通知給委託,以便讓它們知道編輯何時開始、何時結束、以及給它們一個機會來重寫一些編輯行為。例如,委託可以判斷當前文本是否包含有效值,如果沒有,組織編輯會話結束。當編輯最終結束時,你還可以使用委託來得到文本值結果,並更新應用的數據模型。
因為在用途上細微差別,所以每個文本視圖的委託方法也有細微差別。支持UITextField類的位委託實現UITextFieldDelegate協議的方法。類似的,支持UITextView類的委託實現UITextViewDelegate協議的方法。兩種情況下,你並不一定要實現任何協議方法,但是,如果你不實現,文本欄位或視圖沒有什麼用處。
「管理文本欄位和文本視圖」描述了文本欄位和文本視圖的委託消息的順序,並討論了通過這些對象的委託方法執行的個中任務。更多關於UITextFieldDelegate和UITextViewDelegate協議方法的消息,參見UITextFieldDelegate Protocol Reference 和 UITextViewDelegate Protocol Reference。
一個web視圖對象顯示基於web的內容。它是WKWebView的實例,它允許你將基本上是小型瀏覽器整合到app的用戶界面中。WKWebView類充分利用了和iOS中的Safari中一樣的技術,包括完全支持HTML、CSS、以及JavaScript內容。該類還支持很多用戶熟知的Safari的內置手勢。例如。你可以雙擊和捏合來縮放頁面,以及你可以通過用手指拖拽來滾動頁面。
除了顯示內容,你還可以使用web 視圖對象通過使用web表單收集用戶的輸入。就像其他UIKit中的文本類一樣,如果你在web頁面上的表單中有一個可編輯的文本欄位,點擊該欄位就會出現鍵盤,以便用戶可以輸入文本。因為這是wb體驗的組成部分,web視圖自身來管理鍵盤的顯示和關閉。
一個web視圖通過它的適當的委託對象,來提供關於頁面合適載入、以及是否有載入錯誤的信息。Web委託是實現一個或多個WKUIDelegate或WKNavigationDelegate協議的方法的對象。你的這些委託方法的實現,可以響應故障,或者執行其他與web頁面載入有關的任務。
2. 《iOS編程基礎:Swift、Xcode和Cocoa入門指南》epub下載在線閱讀,求百度網盤雲資源
《iOS編程基礎:Swift、Xcode和Cocoa入門指南》((美)馬特·諾伊貝格(Matt Neuburg))電子書網盤下載免費在線閱讀
資源鏈接:
鏈接:https://pan..com/s/1tf37L-6_DDbJCaERnnV_tQ
鏈接:https://pan..com/s/1tf37L-6_DDbJCaERnnV_tQ
書名:iOS編程基礎:Swift、Xcode和Cocoa入門指南
作者:(美)馬特·諾伊貝格(Matt Neuburg)
譯者:張龍
出版社:機械工業出版社
出版年份:2017-4
內容簡介:
O'Reilly Media通過圖書、雜志、在線服務、調查研究和會議等方式傳播創新知識。自1978年開始,O'Reilly一直都是前沿發展的見證者和推動者。超級極客們正在開創著未來,而我們關注真正重要的技術趨勢——通過放大那些「細微的信號」來刺激社會對新科技的應用。作為技術社區中活躍的參與者,O'Reilly的發展充滿了對創新的倡導、創造和發揚光大。
O'Reilly為軟體開發人員帶來革命性的「動物書」;創建第一個商業網站(GNN);組織了影響深遠的開放源代碼峰會,以至於開源軟體運動以此命名;創立了Make雜志,從而成為DIY革命的主要先鋒;公司一如既往地通過多種形式締結信息與人的紐帶。O'Reilly的會議和峰會集聚了眾多超級極客和高瞻遠矚的商業領袖,共同描繪出開創新產業的革命性思想。作為技術人士獲取信息的選擇,O'Reilly現在還將先鋒專家的知識傳遞給普通的計算機用戶。無論是通過書籍出版,在線服務或者面授課程,每一項O'Reilly的產品都反映了公司不可動搖的理念——信息是激發創新的力量。
3. SiriKit框架詳細解析(五) —— 編程指南之Intents和Intents UI擴展(一)
SiriKit是您通過Siri提供內容的一種方式。 它還允許您向 Maps 應用添加對服務的支持。 要支持 SiriKit ,您可以使用 Intents 框架和 Intents UI 框架來實現一個或多個擴展,然後將這些擴展包含在iOS應用程序中。 當用戶通過Siri或Maps請求特定類型的服務時,系統會使用您的擴展來提供這些服務。
僅當您的應用程序實現以下類型的服務之一時才添加SiriKit支持:
汽車製造商可以使用 CarPlay intents 允許用戶使用語音命令控制汽車功能。
每種類型的服務代表您可以支持的功能域,每個域定義一個或多個意圖供您支持。 意圖是表示用戶意圖的對象。 Siri和Maps創建意圖對象以響應用戶請求,並使用任何用戶指定的信息填充它們。 例如,發送消息的意圖可能包括消息的接收者和內容。 您使用intent對象提供適當的響應並執行相關的任務。 有關支持的域及其意圖的更多信息,請參閱 Intents Domains 。
Siri 和 Maps 通過兩種不同類型的擴展與您的應用服務進行互動:
您必須提供 Intents 擴展才能支持 SiriKit 。您的Intents擴展程序負責處理意圖並提供Siri和Maps可用於與用戶通信的信息。提供 Intents UI 擴展是可選的,但是通過Siri與您的應用進行交互的方式對您的用戶來說似乎很熟悉。例如,Intents UI擴展可以顯示橫幅和其他特定於應用的信息,以強化您的應用正在提供響應。
有關用於實現Intents擴展的類的信息,請參閱 Intents Framework Reference 。有關用於實現 Intents UI 擴展的協議的信息,請參閱 Intents UI Framework Reference 。
Siri處理將用戶的語音請求轉換為擴展可以處理的可操作意圖所需的語言處理和語義分析。 Siri和Maps應用程序管理所有用戶交互,並使用標准系統界面向用戶顯示結果。 您的角色主要是提供要顯示的數據。 如果您的應用程序包含Intents UI擴展,您還可以提供自定義界面來補充默認系統界面。
乘車預訂和餐廳預訂主要由 Maps 應用程序處理,盡管用戶也可以使用Siri預訂游樂設施。 您的Intents擴展程序處理源自Maps應用程序的交互,其處理方式與處理來自Siri的請求的方式相同。 如果您自定義用戶界面,您的 Intents UI 擴展可以根據請求來自Siri還是Maps來進行不同的配置。
Siri 和 Maps 通過您的 Intents 擴展程序與您的應用互動。 Intents擴展的入口點是 INExtension 對象,其唯一的工作是將Siri指向能夠響應用戶請求的對象。實現 Intents 擴展時,您經常使用三種類型的對象:
當您的擴展程序有意圖處理時,Siri會詢問您的 INExtension 對象是否有能夠處理該意圖的對象。處理程序對象可以是您想要的任何類型,但它必須實現處理給定意圖所需的特定方法。每個 intent 都有一個與其處理程序必須採用的關聯協議。該協議的方法分為三組:解決方法,確認方法和處理方法。您可以實現所需的方法,並向Siri提供有關您計劃如何處理意圖的信息。
圖2-1說明了Siri與擴展中的處理程序對象之間的高級別流程。在該示例中,當用戶要求使用乘車預訂服務預訂乘車時,Siri創建具有乘坐參數的意圖對象並將其發送給處理者。處理程序將intent對象中的數據解析為可用於完成行程的值。當所有騎行參數都已解決後,Siri要求處理者確認其計劃如何處理乘坐請求並執行任何最終驗證。在確認階段,處理程序提供一個響應對象,其中包含騎行的詳細信息,Siri可能會向用戶顯示。如果用戶接受了乘坐,Siri要求乘車請求處理者處理該意圖。處理程序通過預訂車輛並回復預訂車輛的詳細信息來回應。
有關如何創建擴展的一般信息,請參閱 App Extension Programming Guide 。
要支持 SiriKit ,請在您的iOS應用中添加 Intents extension 。
Xcode提供的 Intents 擴展模板包含一個 INExtension 子類供您自定義。 您可以使用該類來創建處理意圖所需的處理程序對象。 Siri使用您的擴展的 Info.plist 文件來發現它支持的意圖。 Xcode提供的 Info.plist 文件主要是配置的,但您必須修改它的一部分以指定擴展程序處理的意圖。
這個key是必需的。您可以支持給定域中的所有或部分意圖,並且您的擴展可以支持任意數量的域。該值必須包含擴展支持的所有 intent 類。
此鍵是可選的。該值包含您需要解鎖設備的 intent 類的子集。如果處理意圖涉及訪問磁碟上的受保護文件或操縱敏感用戶數據,則可能在此列表中包含 intent 。
實現擴展的行為涉及以下任務:
有關可用意圖的列表以及為每個意圖實現的關聯類和協議,請參閱 Intents Domains 。
在使用Intents擴展程序之前,在注冊任何特定於用戶的詞彙表之前,您的iOS應用程序必須請求授權才能使用Siri。 要請求授權,請執行以下操作:
您的iOS應用首次調用 requestSiriAuthorization: 方法時,系統會顯示一條alert彈窗,提示用戶授權您的應用。彈窗包括您在應用的 Info.plist 文件的 NSSiriUsageDescription 鍵中提供的使用說明字元串。用戶可以批准或拒絕您的應用程序的授權請求,並可以稍後在「設置」應用中更改您應用的授權狀態。系統會記住您的應用程序的授權狀態,以便後續調用 requestSiriAuthorization: 方法不會再次提示用戶。
您的 Intents 擴展程序是代表您的應用程序執行的代理程序,應該能夠執行與您的應用程序相同的服務。由於您的iOS應用和 Intents 擴展執行許多相同的任務,請考慮以下事項:
要測試 Intents 擴展,必須在設備上運行它。 Xcode支持直接從Xcode項目啟動Intents擴展,並在設備上運行時對其進行調試。
當您向項目添加Intents擴展時,Xcode會自動創建一個運行該擴展的 scheme 。
您無法在模擬器中調試 Intents 擴展。
Xcode構建您的應用和擴展,將它們安裝在設備上,然後啟動Siri。
首次安裝您的擴展程序時,Siri可能無法立即識別您的應用擴展程序。您可能需要等待幾分鍾才能發出任何相關命令。同樣,在更新Info.plist文件時,您可能需要等待幾分鍾,然後Siri才能識別出更改。
您的iOS應用程序使用 Intents 框架執行特定任務:
用戶可以為Siri配置與設備其餘部分不同的語言。 在iOS應用程序中,系統使用特定於設備的語言設置檢索本地化內容。 在 Intents 擴展中,系統使用Siri語言檢索本地化內容。 如果您的應用與擴展程序共享本地化內容,則必須使用 Siri 語言共享該內容,您的應用可以使用 INPreferences 類的 siriLanguageCode 方法檢索該語言。
有關獲取Siri語言的更多信息,請參閱 INPreferences Class Reference 。
在 Intents 擴展中,處理程序對象執行解析,確認和處理Siri發送的intent對象的關鍵工作。每個intent對象都有一個專門為處理該intent而設計的相關協議。例如, INRequestRideIntent 對象的處理程序採用 INRequestRideIntentHandling 協議。
每種協議的方法分為三組:
實現處理程序時,必須始終實現處理intent的方法。所有其他方法都是可選的,但建議使用。解決和確認方法是您在嘗試處理意圖之前驗證意圖內容的機會。您還可以使用這些方法來標識或創建處理意圖所需的內部數據對象。
有關意圖列表和相應的意圖處理協議,請參閱 Intents Domains 。
在意圖的解決階段,Siri要求您的處理程序解析關鍵參數並確認您打算使用的值。因為說出了來自用戶的數據,所以可能存在丟失或模糊的信息。解決階段是您驗證所提供數據的機會,並讓Siri知道您是否需要澄清或更多信息。建議您為給定的處理程序協議實現所有解析方法。雖然您可能不會使用所有參數,但每種方法都會告訴Siri您是否在自己的數據結構中找到了適當的值。
您使用解析結果對象將解析結果傳回 SiriKit ,解析結果對象是 INIntentResolutionResult 類的實例。您可能需要解析每種參數類型的不同子類。例如,在以 INPerson 對象的形式解析聯系人時,將返回 INPersonResolutionResult 類的實例。實例化子類時,請使用與解析工作結果相對應的創建方法。表3-1列出了可能的結果,並說明了何時使用每種結果。
Table 3-1 Possible outcomes when resolving intent parameters
解析參數時,嘗試盡快達成成功的解決方案。 詢問更多信息會導致額外的用戶交互以及對處理程序的額外調用,從而導致延遲並可能使用戶感到沮喪。 相反,嘗試根據用戶的模式和習慣選擇合理的值,並僅在需要時要求消除歧義或確認。
Listing 3-1 顯示了乘坐預訂應用程序的示例,該應用程序驗證了乘車的下車位置。 如果存在一個下車位置,則該方法返回一個成功的結果;否則,該方法返回表示需要該值的結果。
4. 如何開發iPad App
你有兩種方式。如果你有面向對象的編程語言背景,如C ++或Java,你可以加入蘋果的iOS開發者計劃或購買iOS
SDK(軟體開發工具包),並著手通過Mac OS X電腦開發一款App。無需編程經驗或訪問到Mac電腦上,你可以開發一個Web
App。功能少但更易 於非程序員開發,Web App都是為Safari、iPad的原生Web瀏覽器基於HTML定製Web頁面。
開發一個iOS App
閱讀蘋果iOS App編程指南以獲得一個對iOS架構和開發一個iOS App的基礎知識的了解。這個指南對開發iPhone和iPad App都是有幫助的。
回顧加盟蘋果iOS開發者計劃的好處。你將獲得教程、示例代碼、蘋果的iOS 4 SDK免費樣書和其他好處。你還可以將你的App上傳到蘋果應用商店。該計劃自2011年4月起每年花費99美元。
從蘋果應用商店下載蘋果iOS 4 SDK。在出版的時候,其費用為4.99美元並需要Mac OS X 10.6.6或更高版本。SDK不適用於Windows。
通過修一門課程學習的iOS編程,參加研習班或學習書籍。開發iPhone App的資料也可能會有所幫助。你學到的開發iPhone App的技能將幫助你開發一個iPad App,因為這兩種設備使用相同的操作系統和開發工具。
開發一個Web App
勾勒出你想通過開發iPad App實現什麼的 「待辦事項」列表。然後,決定你是否能通過一個Web App實現這些目標。
回顧加盟蘋果免費Safari瀏覽器開發者計劃的好處。這會讓你訪問Safari開發庫,示例代碼,教程和其他工具來幫助你開發iPad Web App。
研究蘋果關於准備iPad Web內容的指南。這個文件包含有關主題的詳細說明,例如如何使用W3C標准而非插件、如何修改CSS代碼(層疊樣式表)以及如何准備你的iPad觸摸界面的Web App。
學習和使用有經驗的Web App開發人員撰寫的、由蘋果或其它網站提供的開發Web App在線教程。
上傳你完成的Web App到你的網站上並使用一台iPad進行測試。
5. iOS 開發怎麼入門
著作權歸作者所有。
商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
作者:Franz Fang
鏈接:http://www.hu.com/question/20264108/answer/30263999
來源:知乎
不管是斯坦福大學的CS193p公開課、蘋果官方文檔、絕大多數市場上龐雜的教學書籍都不是很適合入門同學看,想入門的話應該選用學習成本最低的方法,從最最基本開始講起,並不是一味的講解語法與知識,而是一邊實踐一邊學習知識才是最好的學習方法。
並且我想告訴題主,你問的是iOS 開發怎麼入門,但是你補充說明裡說道的設計模式、內存管理等內容暫時不用你關心,等你真正iOS入門了以後在研究吧。也許我可以這么定義你的問題:
一個略懂編程的人並且完全沒有接觸過IOS開發的人想要學習IOS開發應如何學習?
--------------- 2015.5.15 更新 --------------
增加了怎麼在Github上找優質OC項目
動畫效果推薦的教程
部分段落重新組織了語言
(一)objective-c語言開發iOS應用
為什麼不讓初學者看斯坦福教程:我以為,斯坦福大學IOS公開課不適合入門的同學看,裡面第一課講解的就是MVC模式。對於一個剛入門想要學習的IOS的同學可能就完全懵了,心裡想:「我特么第一課都聽不懂我後面還學個P啊」。如果以前沒接觸過面向對象的語言學習的熱情肯定大打折扣。
為什麼不讓初學者看蘋果官方文檔:我還以為,蘋果官方文檔的內容雖然權威但example對初學者一點都不友好,而且個人認為中文譯文翻譯不是令初學者很容易理解。初學階段,教程的易理解程度我認為是非常重要的一點。(實在要看請看英文原版。)
我不否認以上兩者是極好的學習材料,如果你入門了iOS開發並且有一定的英文功底,我是非常推薦你去看的,尤其官方文檔,應該經常翻閱。但是我認為保持學習的熱情是最重要的。本著這個理念,我推薦的學習方法難度非常低,希望你們能滿意。
第一階段: RayWenderlich網站中的 The iOS Apprentice教程 (難度指數:※)
<img src="https://pic3.mg.com/_b.jpg" data-rawwidth="646" data-rawheight="560" class="origin_image zh-lightbox-thumb" width="646" data-original="https://pic3.mg.com/_r.jpg">以上有幾個答案提到了這個網站,但看什麼教程沒有細說,我在這里簡單說說。The iOS Apprentice的教程針對完全沒有編程經驗的人設計。這個教程是外國人寫的並且有免費試讀版,感興趣的人要看看。裡面說的東西都非常非常基本,裡面一個共講解了4個不同類型app,強烈建議一步一步按照上面所寫的步驟敲一遍代碼。其中你會遇到很多復雜的語句和長的可怕的函數,你不用感到恐慌,照著敲,知道它幹嘛用完全OK了,隨著你編程時間以及經驗的增加,你都會懂得。以上有幾個答案提到了這個網站,但看什麼教程沒有細說,我在這里簡單說說。The iOS Apprentice的教程針對完全沒有編程經驗的人設計。這個教程是外國人寫的並且有免費試讀版,感興趣的人要看看。裡面說的東西都非常非常基本,裡面一個共講解了4個不同類型app,強烈建議一步一步按照上面所寫的步驟敲一遍代碼。其中你會遇到很多復雜的語句和長的可怕的函數,你不用感到恐慌,照著敲,知道它幹嘛用完全OK了,隨著你編程時間以及經驗的增加,你都會懂得。
附鏈接:http://www.raywenderlich.com/store/ios-apprentice
註:這個教程是英文原版,並且收費,只免費提供一個app的教程。如果看完了這個免費的教程覺得還挺想繼續學的請參考 @王寒 老師的翻譯教程(只有前3個app教程,第4個教程剛出,國內應該還沒有人翻譯,如果想看只能付費)。PS:(現在開發iOS應用基本都是用Objective-C,至於剛出來的Swift現階段暫時不推薦學習,如果想了解王寒老師也做了swift版本的The iOS Apprentice教程翻譯,自己去找)
附上王寒老師教程下載地址:https://github.com/eseedo/kidscoding
第二階段:培訓班的網路課程及入門書籍
經過第一個階段你應該已經大致掌握IOS開發流程,能編寫一個非常簡單的應用了。這時候相信你的熱情應該會很高漲,但接下來的學習可能會很枯燥,做好准備。網路課程的話推薦李明傑的課程,不推薦其他的。(他目前在廣州創業建立自己的培訓品牌,沒有自製力看網路課程的請去找他。傑哥開源了一些非常優秀的框架如:MJExtension )
建議首先要惡補基礎知識。經過第一個階段你可能覺得你懂不少了,但是只是表面,尤其是沒學過編程的應該好好學習一下視頻前面的課程,主要看看語法。等你看惡心了看煩了就去看視頻里UI部分,這里相對於來說比較輕松,一定要把視頻里寫的語句打一遍,相信這樣你理解會更深刻。裡面說的不清楚的地方上網可以網路,可以查書(如果你有書的話)。
Q:視頻教程是用來做什麼的?
A:光有實踐沒有知識是寫不好程序的,第一階段基本都是實踐,第二部分則是用來查缺補漏。 之所以推薦網路課程是因為講解的比較系統,各種入門知識都會涉及。因為iOS所涉及內容龐 大單看幾本書還是涉及不全的。
Q:上不上培訓班?
A:個人意見是不推薦去,自學足夠了。現在學習iOS的環境比前幾年好太多了,光憑借網上的資料是 完全可以的學得很好的,如果你連這點學習能力還沒有我也不相信你將來能成為一個很優秀的工程師。而且你會發現在社會上一些互聯網公司是拒絕接收培訓班出來的人。
推薦入門書籍:
tips:以下所有書籍有英文版看英文版,有最新版看最新版
1、《Objective-C 程序設計》(難度指數:※※)
2、《iOS 7應用開發入門經典》(難度指數:※※)
3、《iOS開發指南-0基礎到AppStore上架》(難度指數:※※※)
4、《iOS編程實戰》(難度指數:※※※※)
這裡面講解的很清楚,後面甚至有簡單的項目可以練手,這對於看視頻教程看惡心的同學是個福音~你可以先做項目遇到不懂的再看視頻。
這里我想多說一句,買iOS開發的輔導書千萬別買過時太久的,我看以上有答案還推薦iOS4系列叢書呢...拜託現在都什麼年代了,現在iOS8教程都要出來了,你iOS6的教程都過時好久了更別提iOS4了...對於新出的swift語言好多人難以選擇不知道該學OC好還是Swift好。我個人建議現在學OC,一門新語言的誕生需要經過時間的考驗與洗禮。等你學好了OC以後再看也不遲。
第三階段及以後
到這個階段你應該擁有了充分的自學能力,已經達到了入門水平。
這時候以下網址將成為你的家常便飯:
Github,StackOverFlow
如果你編程遇到困難,在StackOverFlow上面應該都能找到合適的解答。(前提是你英文不要太差)。Github上好多開源代碼足夠豐富你的眼界。如果你想成為一個iOS開發者的話這上面兩個網站是你經常以及必須會用到的。
Github上怎麼搜牛人們的項目:
<img src="https://pic2.mg.com/_b.jpg" data-rawwidth="425" data-rawheight="360" class="origin_image zh-lightbox-thumb" width="425" data-original="https://pic2.mg.com/_r.jpg">
想學一點UI的同學可以看:
1、iOS by Tutorials
2、design+code 網址:https://designcode.io/
想學一點動效/交互的同學可以看:
1、下載QuartzComposer及相關插件如Origami,教程: Quartz Composer學習
想學applewatch開發的同學可以看:
1、《watchKit》raywenderlich剛推出這個教程,英文版無譯文。
進價書單:
1、《Effective Objective-C 2.0》(必看)
2、《Objective-C高級編程 iOS與OS X多線程和內存管理》
3、《iOS開發進階》
4、《iOS Auto Layout 開發秘籍》
推薦博客及網站:
1、Github:https://github.com/
2、StackOverFlow:http://stackoverflow.com/
3、Code4App:http://code4app.com/
4、cocoachina:http://www.cocoachina.com/
5、objc中國:http://objcio.cn/
進階博客(排名不分先後..)
1、王巍的博客(我們都叫它喵神,他很萌噠)
鏈接:http://onevcat.com/ (難度指數:※※※※※)
理由:他的swift的新書講解的非常好,但不適合入門,進階的話這是很適合的一本書。其他關於OC的內容可以翻看喵神的博客。
2、唐巧哥的技術博客
鏈接: iOS開發如何提高 (難度指數:※※※※※)
理由:據傳說是iOS圈的劉德華。巧哥05年1月會出一本進階的書,可以關注以下。
3、葉孤城的技術博客 :
鏈接:葉孤城帶你讀源碼之RESideMenu (難度指數:※※※)
理由:葉孤城童鞋的風格就是講解細膩,通俗易懂。
4、破船之家:
鏈接:beyondvincent.com 的頁面 (難度指數:※※※)
理由:破船的博客內容很全面,一些開發筆記,技巧他都會教給你。
5、Xcode Dev
鏈接: Xcode Dev (難度指數:※※※※)
理由:也是一位大神的原創博客,內容很值得學習。
6、txx's 的博客(我們都叫它蝦神,他也超萌噠)
鏈接: txx's blog
理由: 90後非常優秀的iOS開發者,看看他的大學時期的經歷才發現我們過的是多麼懈怠,大神之所以為大神也是有原因的。
7、Kevin的博客
鏈接: Kevin Blog
理由:周楷雯是一個非常厲害的90後iOS開發者,他前些年寫的項目在Github上擁有2500+star (PNchat?忘了)非常恐怖。
8、念茜姐姐的blog
鏈接: 新博客:http://nianxi.net 舊博客:念茜的博客
理由: iOS圈裡的女神級人物,她寫的iOS安全類的文章非常值得一看。
9、孫源的blog
鏈接: sunnyxx的技術博客
理由:90後iOS開發者,技術同樣非常強,目前似乎在網路知道任職。
等等...iOS圈內值實力很強又懂得分享知識的開發者絕不止以上幾位,我隨時想到隨時再補充。
(二)swift語言開發iOS應用
這里推薦兩個入門學習比較好的方法
1、http://appcoda.com的網站(難度指數:※)
非常淺顯易懂的入門級swift教程:http://www.appcoda.com/tutorials/
這個網站可以看兩方面:
(1)、隨時更新的swift tips (有一定水平在看)
(2)、新手主要看以下這本書<img src="https://pic1.mg.com/_b.jpg" data-rawwidth="390" data-rawheight="434" class="content_image" width="390">
2、《Swift Tutorials》 依然是raywenderlich出品,目前只有英文版。(難度指數:※)
3、官方swift譯文教程 《The Swift Programming Language》中文版 (難度指數:※※)
4、上文提到的王巍的博客(喵神)《Swifter - 100 個 Swift 必備 tips》(難度指數:※※※※)
喵神的這本書網上就有售賣,請支持正版,絕對是不可多得的進價書籍,此書並非傳統意義上的教程,是以tip的方式呈獻給大家的。
6. App搜索編程指南(三) —— 讓項目可索引之索引活動和導航點(一)
NSUserActivity 類提供的方法允許您捕獲用戶先前訪問過的特定應用程序狀態和導航點,然後使用 Handoff 恢復它們(有關在應用程序中啟用Handoff的詳細信息,請參閱 Handoff Programming Guide )。 在iOS 8及更高版本中運行的應用程序中,用戶希望Handoff幫助他們在一台設備上啟動活動並在另一台設備上繼續活動。
除了支持 Handoff 之外,在iOS 9及更高版本中使用 NSUserActivity 還可以:
要提供最佳搜索結果,請避免一次創建多個 NSUserActivity 對象。 另請注意,NSUserActivity類不用於幫助您索引應用中的任意數據。 如果要索引特定於應用程序的數據,請使用 Core Spotlight 框架的API並使用相應的 relatedUniqueIdentifier 將索引項鏈接在一起(有關詳細信息,請參閱 Index App Content )。
使用 NSUserActivity API還可以利用Siri建議和智能提醒。 Siri建議顯示在Spotlight搜索屏幕中,可包含可搜索的活動。 (請注意,只有具有高參與率的活動才有資格包含在Siri建議中。有關參與的更多信息,請參閱 Combine APIs to Increase Coverage 。)用戶可以使用Siri智能提醒來提醒您與應用相關的特定內容。 當用戶收到智能提醒時,他們指定的活動會顯示在提醒中。
當用戶使用您的應用程序時,您可以創建與各種導航點和應用程序狀態關聯的活動對象。 默認情況下,每個項目都會添加到設備上的索引中。 在iOS 9及更高版本中,將公共項目標記為符合公共索引的條件也會將其添加到設備上索引並帶來額外的優勢:當您使用網路標記使您的相關網站內容可搜索時,用戶參與公開符合條件的您的應用中搜索結果,可以幫助您提高網站內容的排名。 當用戶在Spotlight搜索結果中點按可搜索的活動或狀態時,您可以使用NSUserActivity API繼續活動並將用戶返回到應用中的相關區域。
要使活動或導航點可搜索,請創建一個 NSUserActivity 對象來表示它。 使用NSUserActivity屬性標識項目的類型,提供描述項目的元數據,並使其符合搜索條件。 將項目設置為符合搜索條件意味著當項目變為當前項目時,該項目將添加到設備上的索引。 Listing 3-1 顯示了如何創建活動。
盡管 Listing 3-1 中未顯示,但 NSUserActivity 還定義了 contentAttributeSet 屬性,該屬性允許您指定描述項目所需的任意數量的屬性。 contentAttributeSet 屬性採用 CSSearchableItemAttributeSet 對象,該對象是 Core Spotlight 對象,用於提供可索引的元數據以豐富搜索結果。 Core Spotlight定義了大量屬性,用於指定多個主題區域中的元數據,例如媒體,事件和消息。 只需要 title , userInfo 和 contentAttributeSet 屬性,但為了給用戶提供最佳體驗,建議您為盡可能多的屬性提供值。 特別是,建議您始終為 thumbnailData 和 contentDescription 屬性提供特定於內容的值。 有關可以使用的完整屬性列表,請參閱 CSSearchableItemAttributeSet Class Reference 。
圖3-1顯示了如何使用三個常用屬性來提供有關可搜索項目的元數據。
特別值得一提的是三個 NSUserActivity 屬性:
默認情況下,活動是私有的 當您設置項目的 qualifiedForPublicIndexing 屬性並使用網路標記來搜索您的相關網站內容時,用戶與該項目的互動有助於提高您網站內容的排名。 要了解有關使用Web標記的更多信息,請參閱 Mark Up Web Content 。
如果未正確設置 expirationDate 屬性,系統會在一段時間後自動使活動到期。
當您的應用內容在您的網站中也可用且您在應用中使用NSUserActivity API並在您的網站中使用網路標記時, webpageURL 屬性非常有用。特別是,您可以使用 webpageURL 屬性來避免對同一項重復索引(要了解更多信息,請參閱 Combine APIs to Increase Coverage )。設置 webpageURL 屬性時,還要使用必須存儲的 userInfo 字典的鍵設置 requiredUserInfoKeys 屬性。如果未設置 requiredUserInfoKeys 屬性,則在恢復活動時 userInfo 字典將為空。
當用戶執行活動或進入與您創建的 NSUserActivity 對象關聯的應用程序狀態時,您的應用程序會調用 becomeCurrent 方法將活動標記為當前。符合搜索條件的當前活動會自動添加到私有設備上的索引(即 CSSearchableIndex )。此外,您可以在搜索結果中啟用用戶操作,例如撥打電話號碼或獲取到某個位置的路線(要了解如何執行此操作,請參閱 CSSearchableItemAttributeSet Class Reference 中的 Supporting Actions )。
為了保證活動及其元數據被編入索引,您必須對活動保持強引用,直到將其添加到索引中。有兩種方法可以執行此操作:第一種方法是將活動分配給創建活動的控制器對象中的屬性。第二種方法是使用 UIResponder 對象的 userActivity 屬性。如果使用第二種方式,則需要在 updateUserActivityState: 方法中設置元數據 - 例如 userInfo 屬性中的信息。否則,您在活動中設置的元數據將不會保留。
如果您希望某個活動符合搜索條件但不適用於設備之間的 Handoff ,請將 eligibleForSearch 屬性設置為 true ,並將 eligibleForHandoff 屬性設置為 false 。
使用 Core Spotlight API刪除使用 NSUserActivity 編制索引的項目。使用NSUserActivity和Core Spotlight API對項目建立索引並使用 relatedUniqueIdentifier 屬性連接項目時,使用Core Spotlight API刪除項目會使該活動不符合索引條件。有關使用 relatedUniqueIdentifier 屬性的更多信息,請參閱 Combine APIs to Increase Coverage 。
當用戶點擊您添加到索引的 NSUserActivity 項目的搜索結果時,您的應用程序應該打開並恢復與該項目關聯的上下文。 為此,您的app委託實現了 application:continueUserActivity:restorationHandler: ,檢查傳入活動的類型,以查看應用程序是否正在打開,因為用戶點擊了搜索結果中的索引項。 application:continueUserActivity:restorationHandler: 方法與您當前使用 Handoff 繼續活動的方法相同。
Listing 3-2 顯示了 application:continueUserActivity:restorationHandler: 的主要實現框架。
7. 如何為iOS設備開發通用的應用程序
當首次引進iPhone的時候,開發人員並沒有關注於創建一個簡單的代碼庫以使能夠運行在多重設備上。沒有其它的設備。在iPodTouch進入市場的時候,界面-尺寸和解析度-幾乎是等同於第一代的iPhone。開發、編譯以及發布與這兩個設備兼容的通用應用程序是非常簡單的。如今,開發一套能夠在所有設備上運行的簡單應用程序並不會太難。
過程步驟AppleXcode使得通用二進制代碼的編碼變得很簡單,但沒有實現自動化。需要一點附加的工作-規劃和編碼階段均需要-以使得生成可擴張的通用應用程序。開發一個通用的應用程序的第一步是從設備菜單中選擇通用選項。Xcode會為iPhone、iPod以及iPad設備使用代碼創建一項目。創建了兩個故事板文件並將其附加到通用項目中。其中一個故事板文件支持iPhone和iPod設備的屏幕尺寸和解析度,而另外一個故事板文件要獨屬於設備產品中的iPad家族系列。
圖A除了設備-獨有的故事板文件之外,一個通用的項目會包括兩個單獨的區域用於單獨地控制每個類型設備的配置設置。被支持的方向、應用程序圖標以及登錄圖片由在項目設置下面的概要標簽的不同部分內進行管理。
圖B圖C圖D正如您所看到的,Xcode具有用於開發通用應用程序的內置的支持。如果開發人員的意圖是維持所有設備的一般體驗,那麼只需遵循在每個故事板上的相同的設計和流型,編譯然後運行即可。然而如果有必要在每一個設備上具有不同的體驗,就會需要額外的編碼。
在iOS編程指南的高級應用程序技巧部分,Apple使用了開發在iPad設備中的橫向和在iPhone以及iPod設備中的縱向上支持登錄的通用應用程序的例子。Info.plist是使用元數據控制iOS應用程序某些方面的非常有效的方式。將特定鍵附加到Info.plist文件上是控制代碼庫之外的參數的一種簡單又可擴展的方法。可以參考一下列表鍵引用,以獲得在Info.plist文件中可以定義的參數的一覽表。
在Info.plist文件內部的一組名稱/數值結構如下:
keyUserInterfaceOrientation//string該key標簽識別屬性,string標簽附上數值。在上面的例子中,由我們的通用應用程序支持的每一個設備都將以橫向模式啟動。為了針對一個特定的設備,我們將這三個設備類型的其中一個附到鍵上。舉例來說,如果我們需要讓iPhone設備以縱向模式啟動,我們應當將以下的代碼加到Info.plist文件中:
keyUserInterfaceOrientation-iphone//string可接受值為iphone,ipad以及ipod。
越過界面有時候需要創建條件代碼路徑以支持設備-獨有的功能。Apple包含了用於容易地測定當前設備類型的宏。UI用戶界面慣用語宏是UIKit框架的一部分,可供所有的應用程序使用。如果該設備是iPad,那麼從該宏中返回的值將會是UIUserInterfaceIdiomPad。如果該設備是iPhone或是iPodTouch,返回的值則是UIUserInterfaceIdiomPhone。
If==UIUserInterfacePhone){//PlaceiPhone/iPodspecificcodehere...}else{//PlaceiPad-specificcodehere...}開發人員一直在不
2012經典語錄
斷地尋找使開發iOS應用程序所需要的代碼數量最小化的方法。其中一個方法當然是維護用於再使用的類別、方法和函數的程序庫。考慮在通用應用程序中用到這些類別的可能性是非常重要的。考慮到這一點,您應當在必要時使用條件代碼路徑開發類別。
最終想法開發通用應用程序有利有弊。從維護和支持的角度來看,更易於管理代碼庫。同時,一個通用的應用程序方法意味著單一發行-升級和補丁-同時覆蓋所有的設備。然而商業需求可能會推翻開發和發布通用應用程序的可行性。有時候對iPhone應用程序和為iPad發布的相同應用程序採取不同的價格點可能會更合適。目前,應用程序商店對每一個應用程序僅支持一種價格。
8. 《Pig編程指南》pdf下載在線閱讀全文,求百度網盤雲資源
《Pig編程指南》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1FgqJ5zs9lsbW1SB8jOZH1g
9. 《OpenGL編程指南原書第九版》pdf下載在線閱讀全文,求百度網盤雲資源
《OpenGL編程指南原書第九版》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1csmWhH3qGLR4OWKR4eWGBw
10. 《Scratch少兒編程入門指南》pdf下載在線閱讀全文,求百度網盤雲資源
《Scratch少兒編程入門指南》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1aFda49PyJSElvaCiTlfHkw