<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      iOS 優(yōu)化界面流暢度的探討

      界面流暢度 大都跟list scrollView有緊密關聯(lián)

      流暢的視覺:就是如絲般順滑

      不流暢視覺:”卡頓”,”抖動”,”遲頓感”

      以上兩種狀態(tài)的描述 都是基于主觀感覺,對于開發(fā)者來說 確實應該有一個臨界指標來參考,自己寫的東西是否還有優(yōu)化的空間呢.

       Frames per Second(每秒幀數(shù))   這個指標 可以通過Instruments 工具中的 Core Animation來觀察.(xCode -> Tools -> Instrument)

      幀數(shù)為 0 說明頁面處于靜止 只要頁面一動起來,這個幀數(shù)就會有變化 然后再趨于靜止.也就是說頁面 滾動起來幀數(shù)是一個呈”非對稱”拋物線的走勢.

      所以達到峰值的幀數(shù) 會呈現(xiàn)連續(xù)變化的一個狀態(tài) 那么這個就是是它的流暢度 ,一般普通的一個list 滾動起來 流暢度 達到60左右 (親測自己的app的一個普通頁面),一個復雜頁面53 - 60(親測).網(wǎng)上有人這么說”45幀每秒,這個幀率已經(jīng)讓人感覺到不那么順滑了,如果低于40幀每秒,普通用戶就會察覺明顯的不流暢了”.所以大家可以根據(jù)這些做參考,或者 是 測試自己的應用 比較幾個普通頁面 和一個復雜頁面也可以有一個相對的參照.就可從理論上分析 是否這個相對比較復雜的頁面是否值得優(yōu)化呢. 

       

      可以優(yōu)化的地方(就是平常拍腦門能想到的地方)

      1.CPU:可以通過Instruments里面的工具檢測cpu等 查出 到底是實現(xiàn)的哪個功能比較增加CPU的負擔

      2.如果是tableView. 組織數(shù)據(jù)很繁瑣沒有用model來映射? 是否cell重用? 繪制高度的方法是不是很冗長,不斷的在重復計算? 需要刷新tableView 使用了不恰當?shù)胤绞?

      3.在滾動視圖中 圓角的處理

      一般情況下我們會這樣做:

      .layer.masksToBounds = YES;

      .layer.cornerRadius = imageView.size.width * 0.5;

      這個方法在滾動視圖中會是特別影響性能

      原因:

      導致拖慢幀率的原因其實都是Off-Screen Rendering(離屏渲染).

      離屏渲染:是指CPU在當前屏幕緩沖區(qū)以外再開辟一個新的緩沖區(qū)進行渲染操作.

      離屏渲染是一個很好優(yōu)化性能的方式,但是頻繁發(fā)生離屏渲染(滾動屏幕 就會很頻繁啊)是非常耗時的。如果是一個圓角幾乎不會對幀率有太大影響,關鍵數(shù)量要是好多個.通過上面的定義可以看出”離屏渲染”關鍵不是渲染 而是 離屏.

      離屏代價:主要是創(chuàng)建緩沖區(qū)和上下文切換的原因。創(chuàng)建新的緩沖區(qū)代價都不算大,付出最大代價的是上下文切換!!!!!(滿紙荒唐言 一把辛酸淚  誰被坑過 誰知道)

      關于上下文切換:

      上下文切換在哪都是一個相當耗費時間的操作,不論是 CPU渲染或是進程切換.其過程:

      (1)我們要保證當前屏幕渲染環(huán)境

      (2)切換到一個新的繪制環(huán)境—>申請繪制資源—>初始化環(huán)境—>開始繪制—>繪制結束—>銷毀繪制環(huán)境

      (3)回到主屏幕呈現(xiàn) 或者 再開辟一個新的離屏渲染重復(2)

      解決:

      那么如何應對這個問題呢?不要在滾動視圖使用cornerRadiu 可以使用下面的方法

      (1)非要作死使用layer.ornerRadius,記得還要添加下面方法

      .layer.shouldRasterize = YES;  //這樣大部分情況下可以馬上挽救你的幀數(shù)在55幀每秒以上。shouldRasterize = YES會使視圖渲染內(nèi)容被緩存起來,下次繪制的時候可以直接顯示緩存,當然要在視圖內(nèi)容不改變的情況下。(具體解釋  layer的頭文件,進入查看這個屬性的英文說明  不覺明厲)

      .layer.rasterizationScale = [UIScreen mainScreen].scale;//需要適當設置"抗鋸齒"  否則在retina的設備上這些視圖會出現(xiàn)鋸齒狀。(具體了解參看 layer 屬性)

      (2)如果可以用切圖遮罩代替的話 會效率很高

      (3)預先緩存住 圓角的圖片(預處理圓角圖片在后臺處理,處理完畢后緩存起來,再在主線程顯示),來避免了離屏渲染

       

      參考資源

      http://www.zhihu.com/question/20382396  (知乎)

      http://www.rzrgm.cn/ioriwellings/p/5011993.html (更具體的解決方案)

       

      posted on 2016-02-29 09:54  ACM_Someone like you  閱讀(3507)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 秋霞电影院午夜无码免费视频| 亚洲精品宾馆在线精品酒店| 国产性色的免费视频网站| 欧美丰满熟妇xxxx性| 精品免费看国产一区二区| 天堂网在线.www天堂在线资源| 国产很色很黄很大爽的视频| 亚洲综合网中文字幕在线| 丝袜老师办公室里做好紧好爽| 极品人妻少妇一区二区三区| 1000部拍拍拍18勿入免费视频下载| 国内精品自国内精品自久久| 人妻中文字幕不卡精品| 国产欧美日韩精品丝袜高跟鞋| 国产亚洲精品第一综合| 欧美大屁股喷潮水xxxx| 一区二区亚洲精品国产精| 国产精品一久久香蕉国产线看观看| 国产线播放免费人成视频播放| 国产久9视频这里只有精品| 熟妇的味道hd中文字幕| 野花韩国高清电影| 欧美一区二区三区成人久久片| 天天躁日日躁狠狠躁av麻豆男男| 九九热视频在线观看精品| 视频二区中文字幕在线| 免费人成网站视频在线观看| 色呦呦九九七七国产精品| 国产a在视频线精品视频下载| 精品人妻伦一二三区久久| 无码免费大香伊蕉在人线国产| 亚洲一区中文字幕第十页| 亚洲无av码一区二区三区| 巨胸喷奶水视频www免费网站| 亚洲高清免费在线观看| 亚洲成人av综合一区| 国产又色又爽又高潮免费| 日本高清成本人视频一区| 无码国模国产在线观看免费| 亚洲精品乱码久久久久久| 性色av一区二区三区精品|