標籤: iOS

利用 CoreML 來判別圖片

在 WWDC 2018 蘋果推出了 Create ML ,讓開發者可以輕鬆的建立並訓練適合自己需求的機器學習模型,它支援圖片、自然語言、表格資料的學習。最近這幾天我就想到要訓練一個自家的模型,用來檢查使用者是否打算上傳不恰當的圖片。

如何用 Appium 測試 iOS App

前一陣子我們開始嘗試 UI 自動化測試,我們首先嘗試 Appium,藉此機會幫安裝過程做個記錄。

iOS App 如何支援 RTL 語言

公司的產品越做越大,前一陣子幫公司的 app 加上阿拉伯文介面,開發過程也累積了一些支援 RTL 語系的心得,藉這個機會跟大家分享。

如何為各個 Pod 指定 Swift 版本

最近升上 Swift 4.2,發現我用到的 Pods 有些還沒支援 4.2 導致編譯錯誤。解決方法也很簡單,只要指定每個 Pod target 的 SWIFT_VERSION4.0 即可。

但是我們不能手動在 Xcode 裡頭調整,因為 CocoaPods 會把 Pods 的 SWIFT_VERSION 設為跟你的 project 一樣,所以下次 pod install 又會被改掉。

如何解決 NSTimer 造成的 retain cycle

最近在替公司 app 做健康檢查,找到一些 memory leaks 的問題,其中一個就是由 NSTimer 所引起的 retain cycle。

NSTimer 是個很容易造成 retain cycle 的物件,無論是新手或是老手都很可能一個不留意就踩到這個坑。舉個很常見的例子,這樣寫就產生 retain cycle 了:

用 Objective-C 實作 Redux 架構

有一定的程式設計經驗之後,會愈來愈感受到程式架構的重要性,在 iOS app 開發的世界裡,最常見的莫過於 MVC 架構,因為它夠簡單而且是蘋果推薦的架構。但當你的程式越來越龐大,流程越來越複雜的時候,就會發現 MVC 架構已經無法滿足需求了。這幾年最為人所知的就是 MVP / MVVM / VIPER / Coordinator 這幾個模式。

我認為這些模式的著眼點都在於「UI」:它們假設你有一套辦法去存取或修改資料,然後它們提出的方案是關於如何處理「界面顯示 / 使用者互動 / 資料存取」之間的關係。

產生 Auto Layout Constraints 的程式碼要放在哪裡

由於種種原因,所以到目前為止,我在公司的專案還是沒有用 Interface Builder,所有的 UI 完全用程式碼一行一行刻出來,當然這也包含 auto layout 相關的程式碼,那這些程式碼應該要放哪裡呢?

如何建立一個漸層的 View

我們的 APP 有一個這樣的畫面,它有這幾點需求:

  • 要顯示文字描述在圖片上
  • 文字描述的背景是漸層色
  • 因為文字長度不同,所以漸層的高度也不同

解決地圖上 Annotation View 偏移的問題

最近在開發 iOS APP 時,有用到地圖的功能,我需要把自訂的大頭針擺放到特定的位置,並且要顯示自訂的圖片。這並不是什麼困難的要求,只是我發現自訂的大頭針圖片(MKAnnotationView)總是有所偏移,不會正好釘在我要的位置,還好最後找到解決辦法。

需求:
有自訂的大頭針圖片,「針頭」的位置就是圖片底部中央的位置,要讓「針頭」正好顯示於地圖上的特定座標,不會有所偏移。