1. 程式人生 > >Object-C知識點 (四) 性能優化

Object-C知識點 (四) 性能優化

動態更新 ack ons 問題 image 常用 動態 監聽 我不

#pragma mark - 性能優化


1. 行高一定要緩存 緩存行高是解決性能優化的最佳途徑(除非刷新頻率已經很高了,否則一定要緩存)
2. 盡量減少計算,所有需要素材提前計算好
3. 控件不要設置圓角半徑,圖片的拉伸要用代碼去處理,減少CPU和GPU的消耗
4. 不要動態創建控件,需要展示的控件,都要提前創建好,在展示的時候根據數據隱藏或顯示
5. cell中的層次越少越好,數量越少越好(實現更好理解的前提下盡可能少)
6. 高級優化 離屏渲染 self.layer.drawsAsynchronously = true
柵格化 self.layer.shouldRasterize = true
self.layer.rasterizationScale = UIScreen.main.scale
異步繪制之後會生成一張獨立的圖像
cell在屏幕上滾動的時候,本質上滾動的是這張圖片
如果cell的性能已經很好就不需要離屏渲染,離屏渲染回在CPU/GPU之間快速的切換,耗電厲害

#pragma mark - 圖片的性能優化/模擬器的技巧

png圖片是支持透明的 設置顏色的時候一般不建議設置透明色,會消耗GPU
Color Blended Layers 圖像的混合區域進行由綠到紅的高亮
Color MisAligned Images 會高亮那些拉伸和縮放的圖片,沒有正確對齊到邊緣的圖片(圖片的周邊透明)
Color Copied Images 復制的圖像(一般不會出現)
Color Offscreen-Rendered Yellow 離屏渲染 shadowPath或者shouldRasterize來優化

#pragma mark - 向工程中添加文件的三種方式

一:黃色的文件夾,打包的時候不會建立目錄,!!!主要保存程序文件!!!
素材-- 不允許重名
二:藍色的文件夾,打包的時候會建立目錄,可以分目錄的存儲素材文件
素材可以重名
遊戲的場景 background.png[草地/雪山/高山]
手機應用的皮膚:白天夜間模式
不要把程序文件放在藍色的文件夾中

三:Bundle
通常用在第三方框架的素材
可以按照黃色文件夾的方式拖拽,同時會保留住目錄結構
可以避免文件重名 logo.png

#pragma mark - Widget開發

1.添加Widget 系統會自動創建Widget文件夾 裏面有需要的文件
2.在原來的Info.plist文件中添加URL Types: 填寫:BuildID 和URL Schemes
3.展示需要的按鈕,關聯方法 URL Schemes中的內容://字符串
4.點擊按鈕走到appDelegate的 application: openURL: options: 根據url.host(lieryang://host)來判斷為哪一個

#pragma mark -- 軟件開發動態修改界面

蘋果現在關閉了js的動態更新的大門,但是還有很多的方法可以實現不需要用戶更新軟件,實時更新用戶界面

appDelegate中訪問服務器加載需要展示的json文件(json一定要小)存放到手機的沙盒文件 不需要監聽失敗

在主控制器
先從沙盒中加載json文件 加載到文件直接展示 沒有加載到文件展示系統默認的界面

這樣就可以實現服務器更新json數據,客戶端就可以實時更新展示


有任何關於iOS開發的問題!歡迎下方留言!!!或者郵件[email protected] 雖然我不一定能夠解答出來,但是我會請教iOS開發高手!!!解答您的問題!!!

Object-C知識點 (四) 性能優化