我的新書AI 職場超神助手:ChatGPT 與生成式 AI 一鍵搞定工作難題的教材投影片已製作完成
歡迎各位有需要的教師和博碩文化索取教材

Objective-C

  • 套件管理工具CocoaPods介紹

    這是1/9的cocoaHeads裡,SuperBil分享的套件管理工具。 之前小岡也有和我推薦過這個工具,當時沒有去深入研究如何使用。 這次與會完後,便開始試著學習使用這個管理套件。(裝完後心得:天呀!實在太好用了!必裝~) 分享資料 投影片:做自己的可可豆夾 錄影檔:CocoaPods CocoaPods介紹 CocoaPods是一個管理套件的工具。 過去在開發app時,如果我們想要用一些第三方的Library,通常會要到GitHub下載專案到本地端,然後把它載入專案裡。這樣如果套件有更新時,都要手動更新,若是不同版本的ios要用到不同的library,又要手動去管理,會比較麻煩。 並且如果是直接把原始碼放到專案裡,會很容易和自己寫的code混在一起,管理和瀏覽都會較為困難。 CocoaPods就是用來管理這些第三方套件,使用CocoaPods之後,專案會變這樣:  安裝方法 這篇文章有非常詳細的方法:CocoaPods 比較要注意的是,我今天在安裝時,因為Podfile檔案所使用的編碼錯誤,會出現如下錯誤 後來我雖然把檔案改成utf-8,還是一直跑出同樣的錯誤。 後來才發現,如果有錯誤,要先把終端機關掉再打開,才會再一次執行。 接下來,如果要更新Podfile,到終端機打入 就可以了! 投影片另外有講到podSpec,如果有在cocoaPods裡面沒有包含的Library (現有的Library可到http://cocoapods.org/去輸入函式庫的名稱找有沒有現有的) 如果沒有的話(或者是自己製作的Library),就可以自己去寫spec 這邊有教學:Specs and the Specs…

  • AutoLayout介紹

    投影片分享 Auto layout in i os 7 from Claire Chang 過去的作法… 使⽤用frame和bounds去決定物件的位置和⼤小。 使用autosizing masks 設定當畫⾯面⼤大⼩小變動時,要固定 那些值(struts)。 在view的⼤大⼩小改變時,可以偵測 super view的⼤大⼩小改變去改變物 件的寬和⾼高的值(springs)。 AUTOLAYOUT和AUTORESIZING MASK的區別 Autoresizing Mask是AutoLayout的⼦子集。 AutoLayout更多的功能…

  • UITableView的小問題

    紀錄一下今天開發我的APP時遇到的小問題, 因為要使用UITableView,發現UITableView放在UIView裡時, 若要使用static cells是不能直接使用的。 當我們要用UIView,裡面有放一些自己的東西,再加上一個Static cells的UITableView時, 會發現雖然在storyboard裡能夠正常的顯示表格的樣子,如下圖 但是當執行出來卻無法顯示已設定好的static cells,而會顯示為一片空白,如下圖 查問Google大神後,在這邊有看到文章有相關的建議,也就是要我們不要實作下面這三個方法 不過,我檢查過後,我並沒有設定這三種方法,但是還是一樣無法正常顯示定義好的static cells, 最後這篇文章解決了我的疑問:How do I put a UITableView into a UIView 原來,我們不能夠直接在UITableView裡直接使用static cells, 如果必需在static cells的畫面裡加上其他元素,則應該要在該位置放入Container,然後Container連接至UITableViewController畫面,…

  • iOS6以上控制螢幕旋轉

    一般的設定方式 TabBarController設定方式 假使今天要控制所有畫面中,某些可支援旋轉,某些不行, 在有使用Navigation Controller和TabBarController的狀況時, 則需要這樣設定: 勾選支援畫面旋轉 在AppDelegate加上這段程式碼 在tabBarController裡加上 不支援旋轉的子畫面加上 要支援旋轉的子畫面加上 Navigation Controller設定方式 若要控制在Navigation Controller之下的單獨畫面是否支援旋轉,則需要在Controller裡加上這段

  • What’s New in Xcode 5

    Asset catalogs (圖片結構) 在XCode5,因為要支援在不同設備使用不同解析度的圖片,我們可能有很多種不同版本且不同檔名的圖片。這時便可以使用Xcode5的新功能Asset catalogs,它會提供一個介面,讓我們可以將一組圖片設定為一個群組,以及要使用的裝置對象。 如下圖 然後在程式裡使用 來使用圖檔。 這個功能最大的好處就是,圖片不再需要強制要用名稱來代表針對的裝置,如@2x, ~iphone,~ipad或-568h,而可以由使用者來定義那些圖是針對那種裝置的。 假使將發佈目標設定為IOS7,Xcode會將asset catalogs編成二進位檔案,這將可以讓APP的下載時間縮短。 Image slicing 現在XCode新增對圖片的”九宮格縮放”設定,這是為了讓同一張圖片可以針對不同的裝置、不同解析度的狀況下做縮放,而不致讓圖片變型。 下圖是選擇Stretches和Tiles的差異,可以看出,是中間的圖片的拉長方式有所差異。 這個功能可以使圖片可以輕易縮放至任意大小,只需設定center mode以及把素材使用至專案裡就好。 Auto Layout improvements 在iOS7的autoLayout有很大的改變,幾乎所有的設定都可以在storybaord上面來做。差異點大置有: Interface Builder不再會在移動物件後,自動改變constraints,但可以選擇是使用原本設定或是接受新的條件 可以輕易的設定兩個UIView之間的constraints(按control+拖曳)…

  • BLE(Bluetooth Low Energy)簡介

    參考資料: TI BLE課程 Core Bluetooth on iOS Bluetooth Low Energy技術及其特點 BLE是Bluetooth 4.0的一部份 特點為:低功耗(很省電,可以用一顆鈕扣般大小的電池,維持運作一年以上的壽命)、低延遲、低吞吐量(傳輸速度低) 不需要像傳統的藍芽,一定要經過MFi認證才可與蘋果設備連接。 傳輸速率低於100kb/s,而傳統藍芽則大於3mb/s BLE、傳統藍芽以及Wifi的比較: 如上圖所示,Wifi、傳統藍芽以及BLE都是在同一個頻段下,左圖紅色部份是三個廣播頻道,避開WIFI了幾個常使用到的頻段,也因此wifi與BLE可以有良好的互存性。在右上的圖代表這三種傳輸方式所需要的供電量,右下的圖則是顯示這三種的傳輸量的比較圖。 現有的Bluetooth類型大致有下面三種,左邊的就是BLE,中間的可以連接BLE及傳統藍芽,右邊的只能與傳統藍芽設備或是Bluetooth Smart Ready連接,Bluetooth Smart Ready則可與這三種任何一種進行連接。 Bluetooth Dual Mode也就是上面所畫的Bluetooth…

  • iOS app security - 分析和防範

    講者 :Hokila mail:hokila.jan@splashtop.com blog:josihokila.blogspot.com FB:fb.me/hokilaj 這是10/17分享的第一個講者,在分享有關app的安全上攻防的相關議題 因為這是我第一次參加cocoahead聚會,誤信了google map而迷路,遲了半小時入場,因此有部份內容沒有聽完整>”< 幸好後來找到Hokila很好心的預錄了當天的內容,在投影片最後一頁的QR code裡(有列在參考資料裡)。 ps:報名網頁的地址『台北市大安區敦化南路一段205號6樓600室』,打入google map會出現在忠孝復興站@@ 說到這,當天我到會場時,有另一個漂亮女生也遲到,我就和她打招呼,結果她問我:妳也是用google map嗎? 嗚哇~所以不只我一個人這樣阿!(握手 今天Hokila講的內容大致如下: iOS app 資料結構 在一個APP裡面大概會有幾個資料夾 。MyApp.app裡面會存放一些APP會用到的照片、XAB、貼圖(PVR)或素材PNG、JPG等檔案(裡面的值無法修改)。 。Documents是建議存放永久性資料的地方,我們可以在裡面創建、修改、刪除要永久存放的檔案,如DB工具、抓影片放裡面,好處是只要plist裡宣告可以file share的話,他會可以用iTune打開來。PS: 這個資料夾會被iCloud自動備份。 。Library則是較為複雜的資料夾裡面一般會有下面這些資料夾…

  • XSpect簡介(一個AOP觀念實作的框架)

    講者資料:小岡 投影片:XSpect 專案github位置:在此 這是10/17在cocoaHead聚會裡由講者所分享的一個他自己所寫的framework 因為他是在今日議程的最後一個講者,有些部份講的較為快速、簡短 有很多投影片也跳過去未說,在當下聽時只能大略聽到一個概念。 較引起我注意的地方,是他所提到的AOP的觀念與應用 也因為對他所說的AOP的觀念以及相關應對、程式設計方式感到蠻有趣的 這部份在會議結束後也花蠻多時間在研究該講者的code以及相關概念的研究 這是講者對AOP的解釋: 如果我要敘述 AOP 在幹嘛,或是說他的目的的話。我會說 AOP 是在用另一種方式去封裝變化,達到原本 OOP 做不到的事。這個變化就是 crosscutting concerns。 crosscutting concerns 就是為了一個邏輯,而散布在四處的程式碼。 AOP 就是要把他們全部包裝在一起。 下面的是其他網頁對於AOP的解釋…

  • iOS 7 轉換指南

    參考資料:   iOS 7 UI Transition Guide、關於iOS7,設計師需要瞭解的十件事 PDF檔下載:  TransitionGuide IOS7的設計要點 依從:UI應要能很幫助使用者了解如何去操作、與內容互動,但不能搶走內容的鋒頭。它著重強調了怎樣使設計更好地支持內容,而不是反過來壓制內容。 清楚:字體在各種大小下都應清晰易讀,並應巧妙的利用圖示及裝飾,去突顯重點。 深度:巧妙運用手勢及視覺階層以利使用者了解、快速操作。 可以看看蘋果是怎樣在iOS7內置的日曆應用當中貫徹這一點的。新的日曆應用在界面上極大的簡化了,去除了一切不必要的設計元素,並使用了乾乾淨淨的白色背景,完全以內容為中心。 根據「依從」原則,apple建議開發者不要使用擬真。介面的設計應該是圍繞著內容而存在,不應奪走內容的光芒。因此,官方建議盡量避免使用3D質感的按鈕、漸變、光暈、陰影等擬物化的設計,因為他們認為這樣的設計會奪去使用者對內容的焦點。但雖然圖示要輕量化,最小點擊區域44px的規則依然不變,因為用戶不能點擊小於44px的界面元素。 關於移除擬物化風格的設計方式,可以參考iOS7內置的Game Center、日曆和Podcast應用。 另外,關於深度,iOS7最吸引人的設計之一就是系統界面當中由加速計驅動的3D效果。隨著設備在物理空間當中的移動,圖標與背景圖片會展示出視差效應。這是iOS7三大設計主題當中的第三點的典型示例: 深度:視覺外觀的層次以及逼真的動畫效果可以傳達出界面的活力,使界面更容易被理解,並提升用戶的愉悅度。 自然,蘋果也希望應用設計師們採用相同的方式,通過半透明及動畫效果來展示界面和元素之間的層級關係。這是應用設計理念的一次重大飛躍,而且隨著iOS7的發布和普及,這些效果很快就會成為用戶期望當中的一部分。 在iOS7設計規範當中,蘋果建議,在iOS7框架下重新設計應用的最佳方式,就是剝離你已有的界面,將應用的核心功能呈現出來,重新確認它們之間的相關性。 一旦你確認好功能方面的核心要素,就需要通過iOS7的設計主題將界面和交互模式重新構建起來。舉個簡單的例子,蘋果的指南針應用採用了最小化和功能優先的設計方式,通過重新設計過的、更注重細節的形式來展示關鍵信息。 iOS7的應用界面通過大量的呼吸空間來確保可讀性和易用性。在官方的設計規範中,蘋果明確指出,他們希望設計師們通過留白傳達出平靜和穩定的感覺,使應用看上去更加專注和高效。 檢視現在的APP 在升級APP至iOS7之前,先檢查幾個項目:…

  • IOS6與IOS7的不同處整理

    1. View會和狀態列重疊(壓在其之下) 2. 按鈕沒有邊框 3. tab bar變為半透明 4. 狀態列的顏色不會與導覽列分開 5. tintColor的影響顏色範圍改變,導覽列與tab bar的顏色不會受到tint Color的影響 ps:經測試,在ios7對於Segmented Control的tintColor,如果使用Global tint,一開始時的框線顏色不會變,但點過後顏色會改變。此時必須去各別設定該元件的tint color才會完整變更顏色 6. tab bar的圖示有按下狀態及非按下狀態 7. 文字樣式明顯不同(即使是相同的設定) 8. 預設會是全螢幕畫面 9.…


17年資歷女工程師,專精於動畫、影像辨識以及即時串流程式開發。經常組織活動,邀請優秀的女性分享她們的技術專長,並在眾多場合分享自己的技術知識,也活躍於非營利組織,辦理活動來支持特殊兒及其家庭。期待用技術改變世界。

如果你認同我或想支持我的努力,歡迎請我喝一杯咖啡!讓我更有動力分享知識!