亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

詳解ios11中estimatedRowHeight屬性

2020-07-26 02:33:01
字體:
來源:轉載
供稿:網友

相信大家都已經升級了iOS11,而且也做了相應的適配,其中對于tableView這個控件進行適配的時候,比如:集成MJRefresh的時候,當然還有其他很多情況下,很多資料都有說需要把estimatedRowHeight屬性設置為0,那么它到底是什么,為什么要這么來做,我們來探究下。

什么是estimatedRowHeight?

簡而言之estimatedRowHeight是一個預估高度,iOS11之前是為0,在iOS11下,這個值默認為44。

我們知道tableView是繼承于ScrollView的,一個scrollView能滑動,需要設置contentSize,那么tableView的contentSize怎么來呢?iOS11之前,會調用tableView每一個cell的heightForRowAtIndexPath來算出整個高度,從而相加得出contentSize來,這一個步驟挺耗性能!

所以iOS11,默認打開了estimatedRowHeight估算高度功能,當tableView創建完成后,contentSize為estimatedRowHeight(默認值為44)*cell的數量,不需要遍歷每一個cell的heightForRowAtIndexPath來計算了。但是這樣子真實的contentSize又怎么得出來呢?

不要急,我們看官方文檔的描述,里面的一句話

也就是說在滑動的時候,來計算這個值。具體是怎么計算的,我們可以舉2個例子:

例子一

我們創建一個TableView,在iPhone7(iOS11)下,origin = (x = 0, y = 20),size = (width = 375, height = 657),此時方法返回的cell高度為50

-(NSInteger)tableView:(UITableView )tableView numberOfRowsInSection:(NSInteger)section{   return 100; }  `-(CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath{   return 50; } -(void)scrollViewDidScroll:(UIScrollView )scrollView {   NSLog(@”table ContentSize %@”, NSStringFromCGSize(scrollView.contentSize)); }

結果我們可以看到下圖,初始高度為100 * 44=4400

table ContentSize {375, 4400}

當我往下拉(往下不是往上),不會出現新的cell,僅僅是為了觸發scrollViewDidScroll這個方法來打印出下面語句來

table ContentSize {375, 4490}

這個值怎么出來的呢?按照計算的話,也應該是4400+(50-44)*13=4478 (這里50-44是每一行的實際高度和預估的高度的差值;13是界面顯示出0~12,總共13行)。

后面經過調試你會發現,實際上會調用15次heightForRow的方法,這15次,是預估高度為44,在657高度的屏幕上,會顯示出657/44=15個cell出來,所以它的實際計算會根據這個值來進行,那么此時我們就能得出正確的結論來了4400+15*(50-44)=4490。

后面當你每次顯示出新的cell出來的時候,再進行調整,增加50-44=6的高度。

例子二

和例子一的區別在于,cell高度返回為30,也就是小于預估高度44,其余不變

-(CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath{        return 30; }

結果我們可以看到下圖,初始高度為100 * 44=4400

table ContentSize {375, 4400}

當我往下拉(往下不是往上),不會出現新的cell,僅僅是為了觸發scrollViewDidScroll這個方法來打印出下面語句來

table ContentSize {375, 4092}

按照例子一的解釋,我們計算下:4400 -(44-30)15= 4190 ??!它又是怎么來的呢?經過調試,我們發現它調用了heightForRow這個方法22次,也就是目前顯示在屏幕上的可見cell數量,按照這個,確實符合:4400 -(44-30)22= 4092。同樣的,當你往上滑動,出現新的cell的時候,contentSize的高度會減去(44-30)

總結

那么我們可以得出結論,當你的實際高度大于預估高度的時候,會按照預估高度下的cell的數量來計算contentSize,當實際高度小于預估高度的時候,會按照實際高度下的cell的數量來計算contentSize。

如果我們要回到iOS11之前的效果,我們可以讓estimatedRowHeight=0,關閉這個預估高度的效果。

延展

為什么使用MJRefresh在iOS11下要讓estimatedRowHeight=0,因為MJRefresh底部的上拉刷新是根據contentSize來計算的,當數據更新的時候,得出來的contentSize只是預估的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情在线观看视频| 亚洲精品福利免费在线观看| 久久免费成人精品视频| 欧美性猛交xxxx富婆| 国内精品久久久久久影视8| 成人乱人伦精品视频在线观看| 九九久久国产精品| 美女国内精品自产拍在线播放| 91精品在线观| 亚洲一区二区三区乱码aⅴ蜜桃女| 一区二区三区国产在线观看| 国色天香2019中文字幕在线观看| 亚洲色图在线观看| 久久99精品久久久久久琪琪| 精品在线欧美视频| 日韩美女激情视频| 亚洲国产精品成人va在线观看| 久久人人爽人人爽爽久久| 日韩人在线观看| 国产精品久久久久久久久久三级| 国产成人一区三区| www.xxxx精品| 久久精品国产欧美亚洲人人爽| 亚洲国内精品在线| 欧美大片免费观看在线观看网站推荐| 国产精品第一区| 丝袜美腿亚洲一区二区| 国产z一区二区三区| 久久亚洲精品小早川怜子66| 国产精品爽黄69天堂a| 国产精品羞羞答答| 国产精品欧美一区二区三区奶水| 久久久久久久999| 久久久久久久久爱| 欧美午夜激情视频| 91在线视频成人| 成人精品久久久| 日韩精品丝袜在线| 日韩欧美在线观看视频| 亚洲国产精品成人一区二区| 555www成人网| 中文字幕亚洲欧美日韩在线不卡| 亚洲成年网站在线观看| 久久精品中文字幕免费mv| 美日韩精品免费视频| 欧美极品欧美精品欧美视频| 日产日韩在线亚洲欧美| 国产91精品最新在线播放| 88国产精品欧美一区二区三区| 亚洲国产精品资源| 国产又爽又黄的激情精品视频| 日韩国产一区三区| 亚洲第一二三四五区| 欧美一级电影在线| 亚洲精品有码在线| 91黄色8090| 正在播放欧美一区| 97在线视频国产| 麻豆一区二区在线观看| 欧洲成人免费视频| 国产精品久久久久久久天堂| 久久精品99无色码中文字幕| 久久99热精品| 91亚洲人电影| 久久精品青青大伊人av| 在线观看精品自拍私拍| 亚洲第一视频在线观看| 日韩精品中文字幕在线观看| 亚洲专区中文字幕| 亚洲国产精品久久| 97超碰蝌蚪网人人做人人爽| 亚洲美女自拍视频| 亚洲欧美日韩视频一区| 亚洲成人黄色在线| 亚洲第一av网站| 欧美综合国产精品久久丁香| 日韩av片免费在线观看| 日韩电影中文字幕在线| 国内精品在线一区| 欧美成人精品h版在线观看| 久久久视频精品| 91日本视频在线| 亚洲第一国产精品| 久久久精品2019中文字幕神马| 亚洲专区在线视频| 久久九九精品99国产精品| 欧美精品激情在线观看| 久久久亚洲天堂| 久久精品久久久久久国产 免费| 亚洲精品电影在线观看| 久久99精品久久久久久噜噜| 超碰精品一区二区三区乱码| 97在线视频一区| 中文字幕久久精品| 亚洲aⅴ男人的天堂在线观看| 一色桃子一区二区| 国产精品7m视频| 亚洲深夜福利在线| 97国产真实伦对白精彩视频8| 在线观看国产成人av片| 国产精品激情av电影在线观看| 欧美多人爱爱视频网站| 国产精品国产福利国产秒拍| 国产日韩欧美夫妻视频在线观看| 成人福利网站在线观看11| 最好看的2019年中文视频| 久久国产精品免费视频| 久久91亚洲精品中文字幕| 伊人久久男人天堂| 亚洲精品电影在线观看| 欧美在线影院在线视频| 亚洲午夜性刺激影院| 亚洲自拍小视频免费观看| 亚洲iv一区二区三区| 国产精品福利在线观看网址| 欧美激情国产高清| 久久在线免费视频| 黄色成人在线免费| 这里只有精品丝袜| 日韩欧美福利视频| 91精品中国老女人| 久久97久久97精品免视看| 欧美性xxxxx极品| 黑人巨大精品欧美一区二区免费| 久久国产精品偷| 日本a级片电影一区二区| 日韩av在线电影网| 亚洲天堂av在线免费| 亚洲视频在线观看网站| 三级精品视频久久久久| 欧美成人一二三| 欧美日韩国产综合新一区| 午夜精品久久久久久久久久久久| 综合网日日天干夜夜久久| 欧美亚洲在线视频| 日本高清不卡在线| 久久夜色撩人精品| 色琪琪综合男人的天堂aⅴ视频| 91精品啪在线观看麻豆免费| 欧美精品一区二区三区国产精品| 日韩精品视频在线观看网址| 亚洲大胆人体在线| 亚洲色图色老头| 激情久久av一区av二区av三区| 九色成人免费视频| 国产97在线|亚洲| 97高清免费视频| 91亚洲精品视频| 国产亚洲免费的视频看| 亚洲精品99999| 日韩美女视频免费在线观看| 欧美xxxwww| 最近更新的2019中文字幕| 亚洲精品一区二区三区不| 亚洲一级黄色片| 亚洲九九九在线观看| 91国产中文字幕| 九九精品在线播放| 日韩精品一区二区视频| 成人淫片在线看| 91精品久久久久久久久久| 一区二区三区在线播放欧美| 亚洲成年网站在线观看| 久久福利视频网|