標籤: iOS
iOS App 如何支援 RTL 語言
公司的產品越做越大,前一陣子幫公司的 app 加上阿拉伯文介面,開發過程也累積了一些支援 RTL 語系的心得,藉這個機會跟大家分享。
繼續閱讀 ➜如何為各個 Pod 指定 Swift 版本
最近升上 Swift 4.2,發現我用到的 Pods 有些還沒支援 4.2 導致編譯錯誤。解決方法也很簡單,只要指定每個 Pod target 的 SWIFT_VERSION
為 4.0
即可。
但是我們不能手動在 Xcode 裡頭調整,因為 CocoaPods 會把 Pods 的 SWIFT_VERSION
設為跟你的 project 一樣,所以下次 pod install
又會被改掉。
如何解決 NSTimer 造成的 retain cycle
最近在替公司 app 做健康檢查,找到一些 memory leaks 的問題,其中一個就是由 NSTimer
所引起的 retain cycle。
NSTimer
是個很容易造成 retain cycle 的物件,無論是新手或是老手都很可能一個不留意就踩到這個坑。舉個很常見的例子,這樣寫就產生 retain cycle 了:
一個 AFNetworking 的 retain cycle 問題
AFNetworking 封裝了網路連線的許多工作,讓 iOS/Mac 開發者可以用簡潔的寫法去處理連線,但你知道要如何正確使用,才不會出現 retain cycle 嗎?
繼續閱讀 ➜用 Objective-C 實作 Redux 架構
有一定的程式設計經驗之後,會愈來愈感受到程式架構的重要性,在 iOS app 開發的世界裡,最常見的莫過於 MVC 架構,因為它夠簡單而且是蘋果推薦的架構。但當你的程式越來越龐大,流程越來越複雜的時候,就會發現 MVC 架構已經無法滿足需求了。這幾年最為人所知的就是 MVP / MVVM / VIPER / Coordinator 這幾個模式。
我認為這些模式的著眼點都在於「UI」:它們假設你有一套辦法去存取或修改資料,然後它們提出的方案是關於如何處理「界面顯示 / 使用者互動 / 資料存取」之間的關係。
繼續閱讀 ➜產生 Auto Layout Constraints 的程式碼要放在哪裡
由於種種原因,所以到目前為止,我在公司的專案還是沒有用 Interface Builder,所有的 UI 完全用程式碼一行一行刻出來,當然這也包含 auto layout 相關的程式碼,那這些程式碼應該要放哪裡呢?
繼續閱讀 ➜如何建立一個漸層的 View
解決地圖上 Annotation View 偏移的問題
最近在開發 iOS APP 時,有用到地圖的功能,我需要把自訂的大頭針擺放到特定的位置,並且要顯示自訂的圖片。這並不是什麼困難的要求,只是我發現自訂的大頭針圖片(MKAnnotationView
)總是有所偏移,不會正好釘在我要的位置,還好最後找到解決辦法。
需求:
有自訂的大頭針圖片,「針頭」的位置就是圖片底部中央的位置,要讓「針頭」正好顯示於地圖上的特定座標,不會有所偏移。