iOS 開發 - 改善APP的流暢度 (繪製股票行情)

来源:http://www.cnblogs.com/beddup/archive/2016/04/08/5351287.html
-Advertisement-
Play Games

這幾天做了一個查看股票行情的app. 完成之後,當k線比較多的時候,app 對於捏合、拖動手勢的反應不太流暢, 主要原因是drawRect: 乾的活太多, 竟然需要40ms+, fps 自然不高 最後按照下麵這些原則,進行調整修改,流暢度提高不少,大多數的繪製時間控制在了10ms左右 總結如下: 1 ...


這幾天做了一個查看股票行情的app.

完成之後,當k線比較多的時候,app 對於捏合、拖動手勢的反應不太流暢,

主要原因是drawRect: 乾的活太多, 竟然需要40ms+, fps 自然不高

最後按照下麵這些原則,進行調整修改,流暢度提高不少,大多數的繪製時間控制在了10ms左右

 

總結如下:

1. 儘量不要實現drawRect(每次調用該方法時,都要為backing store分配記憶體,非常消耗CPU)

2. 避免在drawRect:中進行耗費大量CPU資源的工作

2. 儘量少調用setNeedsDisplay:(視圖內容變化時才調用)

3. 考慮使用setNeedDisplayInRect: , 傳入drawRect:的rect越小,stoke,fill的時間越少, 即使drawRect:是根據視圖邊界繪製的)

4. 充分利用GPU的資源,直接設置layer的border,shadow,corner,gradient等屬性, GPU將會處理這些屬性(相反如果GPU緊張,CPU空閑,應由CPU處理,可在drawRect:中實現)

5. 如果繪製很多東西到一個視圖時,可嘗試開啟drawsAsynchronusly,那麼GPU會將視圖內容繪製到backing store中,但是開啟後,記憶體會增加,因此需要評估開啟前後性能的變化,謹慎使用。

 

 

代碼:https://github.com/beddup/TradeTraining/tree/master  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文轉自文頂頂,稍加修改 1.for迴圈 要遍歷字典、數組或者是集合,for迴圈是最簡單也用的比較多的方法 優點:簡單 缺點:由於字典和集合內部是無序的,導致我們在遍歷字典和集合的時候需要藉助一個新的『數組』作為中介來處理,多出了一部分開銷。 2.for....in....遍歷 在Objective ...
  • 在github上面有很多的第三方類庫,大大節約了大家的開發時間 下載地址:https://github.com/gsdios/SDCycleScrollView 現已支持cocoapods導入:pod 'SDCycleScrollView','~> 1.61' 效果 具體實現代碼 ...
  • 前言 在iOS開發中,很多公司對項目的版本控制管理都使用了git,當然也有部分公司使用的是svn。當年我最初接觸的是svn,覺得使用起來挺方便的,但是每次切分支都需要下載一份新的代碼起來,這實在太麻煩了,而且公司的網路下載一個項目的所有資源起來也有數百M,這還用工作麽? 當年,第一次聽說github ...
  • 1、墨刀 https://modao.cc/ ...
  • Android內打日誌用的當然是Log.i(tag,string),調試時的日誌輸出可以很快的反映一些問題,方便我們跟進。 但是如果連日誌都打不出來了怎麼辦呢,我今天就遇到了比較坑的問題。項目里別的日誌都輸出正常,偏偏我寫的Log.i沒有列印出東西,過濾器,進程,什麼的,都設置好了,日誌死活出不來。 ...
  • 上次學習了 "iOS學習筆記09 核心動畫CoreAnimation" ,這次繼續學習動畫,上次使用的 很多人感覺使用起來很繁瑣,有沒有更加方便的動畫效果實現呢?答案是有的,那就是 UIView動畫封裝 一、UIView動畫 蘋果知道圖層動畫使用麻煩,就為我們封裝到了 里,使我們可以簡單的實現各種動 ...
  • 最近打算寫一個系列的android初級開發教程,預計40篇以上的文章,結合我實際工作中的經驗,寫一些工作中經常用到的技術,讓初學者可以少走彎路,寫一個系列的話,大家學習起來也有頭有尾。 今天就從我們每天都會用到的TextView講起. 1.設置背景顏色 2.如何在程式裡面動態賦值 這裡可以直接是字元 ...
  • 本章繼續講解在Android開發中,數據的存儲與管理。涉及知識點:SQLite,SwipeRefreshLayout控制項刷新。 1.功能需求 練習使用SQLite 做一個登錄界面,資料庫欄位包含用戶名、密碼以及是否登錄中的狀態 模擬登錄成功後,將登錄的用戶名及登錄狀態(登錄中)寫入資料庫,並跳轉新頁 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...