早先,寫過一陣子RN,前一陣子寫微信小程序,深深地覺得CSS這個東西寫起來很爽,樣式與界面完全隔離,寫好一套一套的樣式 CSS Class 然后,在寫界面HTML的時候直接對界面元素,無論是什么HTML標簽,什么控件,只要指定 CSS Class 的名字就能自動生效。
iOS端持久化的方案選擇比較多,NSUserDefault,Keychain,File,sqlite都可以幫助存儲關鍵的業務數據。NSUserDefault和Keychain都是輕量級解決方案,自定義數據格式的File則讀取麻煩一些,每次更新部分數據都會導致整個文件io,數據的結構一旦復雜起來,最后還是會走向sqlite。
創建 STMURLCache 后設置 NSURLCache 的 URLCache ,在 cachedResponseForRequest 方法中獲取 NSURLRequest 判斷白名單,檢驗是否有與之對應的 Cache ,有就使用本地數據返回 NSCachedURLResponse ,沒有就通過網絡獲取數據數據緩存。 STMURLCache 對象釋放時將 NSURLCache 設置為不緩存,表示這次預加載完成不需要再緩存。當緩存空間超出設置大小會將其清空。
輪播視圖通常也叫Banner,90%以上App都會用到的一個控件,網上有很多開源代碼,但是至今我覺得比較好的一個是 SDCycleScrollView ,因為他解決了我接下來要吐槽的兩個問題。
在日常iOS開發中,系統提供的控件常常無法滿足業務功能,這個時候需要我們實現一些自定義控件。自定義控件能讓我們完全控制視圖的展示內容以及交互操作。本篇將介紹一些自定義控件的相關概念,探討自定義控件開發的基本過程及技巧。
TYAttributedLabel 簡單,強大的屬性文本的控件(無需了解CoreText),支持圖文混排顯示,支持添加鏈接,image和UIView控件,支持自定義排版顯示
Reveal 是一個 iOS UI 調試工具,使用 Reveal 可以在應用運行時方便的查看頁面的層級結構,此外,可以在 Reveal 中動態的修改頁面中各個控件的背景色、字體大小(可以顯示字體的控件,如 UILabel)等樣式,并且不需要重新運行程序就可以在 Reveal 中實時看到修改后的效果。
在設置 UILabel 的 Frame 高度時,不能簡單的設置為字體的 font size 。否則會將字體的一部分裁剪掉。因為 UILabel 在不同的字體設置下,對 Frame 的高度要求也不一樣,大多數情況下都比Font的高度設置要高一些。
用xcode archive 導出ipa 然后上傳到fir/蒲公英等測試平臺 需要花至少10到20分鐘,使用Jenkins搭建的持續集成環境只需3分鐘. 下面是我今天早上研究的成果
使用 KVO 有一個常見的 crash 就是沒有移除監聽,我們需要在 dealloc 方法中執行 removeObserver 方法。這里推薦 facebook 開源的 KVOController ,讓我們更方便地使用 KVO。
NSLog,po命令和普通斷點調試相信每個iOS開發者都會,這里就不作介紹了。 一、Memory Graph Xcode8新增:Memory Graph解決閉包引用循環問題 這個時候就進入了斷點模式,可以查看issue面板,注意選擇右邊Runtime: 有很多嘆號說明就有問題了。看內存中object的名字,有一條是Closure captures leaked。展開后點擊就可以看到這個issue對
這篇文章類似一個源碼解析,但不同的是,它不光光是解析,更是實戰,因為我覺得學習一個東西必須要自己寫一遍才算是真的學了一遍,否則即便是讀完了源碼印象還是不會太深刻,so,開始吧。
在這里總結一些iOS開發中的小技巧,能大大方便我們的開發。
PYTheme An easy way to change theme through NSObject's category for iOS. 通過NSObject的分類實現使用簡單的主題更換。 Features 輕量級 低耦合 自動管理內存 支持動態更換主題顏色 支持動態更換主題圖片 支持CocoaPods Requirements iOS 7.0 or later Xcode 7.0 or
iOS 開發中 Objective-C 和 Swift 都用的是 Clang / LLVM 來編譯的。LLVM是一個模塊化和可重用的編譯器和工具鏈技術的集合,Clang 是 LLVM 的子項目,是 C,C++ 和 Objective-C 編譯器,目的是提供驚人的快速編譯,比 GCC 快3倍,其中的 clang static analyzer 主要是進行語法分析,語義分析和生成中間代碼,當然這個過程會對代碼進行檢查,出錯的和需要警告的會標注出來。LLVM 核心庫提供一個優化器,對流行的 CPU 做代碼生成支持。lld 是 Clang / LLVM 的內置鏈接器,clang 必須調用鏈接器來產生可執行文件。
類似淘寶個人信息狀態欄,京東金融等雙波浪動畫,主要方法:通過自定義View,利用正弦函數與余弦函數的效果.
在寫 iOS 代碼的時候,怎么樣去 new 一個新對象出來,都有一些講究在里面。使用不同的姿勢去創建對象,對后期維護所造成的影響會存在細微的差別。
頭尾式動畫(了解) [UIView beginAnimations:nil context:nil]; 準備開始動畫 [UIView setAnimationDuration:5]; 設置時間 [UIView commitAnimations]; 提交動畫(真正開始做動畫) 塊動畫 +(void)animateWithDuration:(NSTimeInterval)duration animat
當我們去點一個屬性的時候,我們知道其實是調用了屬性的setter或者getter方法。那么,用點調用一個方法會發生什么?
pop是一個extensible(可擴展)的動畫引擎,提供基礎的Basic 靜態動畫以及支持彈簧和衰減動畫,用來構建高可用性的真實、物理特性的交互體驗,使用oc作為基礎,可用戶擴展到任何的oc的Object的屬性,是一個非常易于測試的框架,并且在Facebook自家的Paper上應用。