【iOS開發(fā)細節(jié)】之-動態(tài)計算UITableviewCell高度

寫在前面的話:

在iOS開發(fā)中,UITableview是我們用到的最多的控件友存,好多列表類的頁面都需要用表格的形式來寫陶衅,在開發(fā)的過程中,我們經(jīng)常會遇到列表中樣式基本一樣膨俐,但是會有不同顯示樣式的表罩句,熟悉UITableview的都知道,這時候用UITableview是最合適的乳愉,但是每行cell的高度又不一樣匾委,UITableview的代理方法中只有一個返回cell高度的方法氓润,遇到這種情況的時候咖气,我們需要怎么解決呢?今天我就教給大家一個最好的動態(tài)計算cell高度的方法浅役。

UITableview的代理方法中有這樣一個方法:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

這個方法是返回每一行的cell也就是row的高度的代理方法觉既,平時我們的寫法都是這樣的

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
     return   100瞪讼;
}

這樣寫了以后我們的每一行cell的高度都是固定的100的高度符欠,然而有時候我們并不是只要簡單的這樣的相同的高度瓶埋,我們需要每一行的cell的高度都不一樣,那有人就會說曾撤, 我們直接判斷某一行是某一行盾戴,然后給返回不同的高度不就好了尖啡,像這樣:

通不過判斷不同的cell返回不同的高度

當然你寫出這樣的代碼衅斩,我真的不會說什么怠褐,如果cell只有5行的時候奈懒,你完全可以這樣寫磷杏,但是如果cell如果有500行溜畅,你也這樣寫么?那你不得寫死在這兒极祸?那為了解決我們不死在鍵盤前慈格,今天就進入我們的正式題目: 動態(tài)計算cell高度

動態(tài)計算cell高度

原理:原理其實很簡單怠晴,我們把cell里面每個控件的高度和cell的高度都用模型裝起來,然后讓模型動態(tài)自動計算每個控件的高度浴捆,并且動態(tài)得出cell的高度蒜田。這樣我們在上面的代理方法中就可以動態(tài)的獲取到cell的高度然后return回去了,空說難理解选泻,直接上代碼

通過cellFrame模型動態(tài)計算cell高度

這里的XMCellFrame就是我創(chuàng)建的模型冲粤,里面裝的就是我的cell里面每個控件的frame,包括每個cell的高度页眯,模型貼出來給你們看一下

XMCellFrame.h文件
XMCellFrame.m文件

細心的同學可能會發(fā)現(xiàn)餐茵,我的.h 和.m文件有相同的屬性锣笨,兩者不同的是.h是加了只讀的readonly的,.m文件是沒有加readonly屬性的椭岩。這里給大家講解一下,為什么要這么寫呢塌计,因為我這個模型里面只涉及到位置frame計算的,然后在引用的地方只是拿來用就行,不希望被別人改動的伊脓,所以我加了readonly屬性,在.m中因為你在外面加了readonly屬性榄笙,這里當我們計算出位置以后需要給每個frame賦值,所以我們要重新聲明屬性才能給賦值,如果不重新聲明拄查,會報錯。

計算frame的代碼如下:
計算frame 01

計算frame 02

計算frame 03

注:在計算frame的模型中,我們有一個數(shù)據(jù)模型科平,通過重寫數(shù)據(jù)模型的set方法來計算每個控件的frame和cell的height污抬。為什么要在model的set方法中這樣做呢矢腻,因為在計算frame的時候有時候是需要拿到數(shù)據(jù)去計算的多柑,比如示例中的desFrame和photosFrame聂沙。

那么有人就會問了,那我的cell里面的各個控件的位置怎么賦值呢,別急温眉,在下面

cell各個控件賦值方法

這里我已經(jīng)把基本的注意點和難點都寫出來了豌骏,也講明白了,如果你還是看不懂,我把demo給你們洒琢,你們下載來充分看一下荧嵌,你學會這個方法谭网,對你以后的開發(fā)絕對會有很大的作用,加油锥涕!

點擊demo下載

我是妖怪殖妇,一個iOS的coder,我沒有多么大的技能,我只能把我知道的和遇到的坑教給你們延赌,希望對你們有所幫助掐松,謝謝杠愧!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末袭灯,一起剝皮案震驚了整個濱河市姨丈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拜马,老刑警劉巖扮超,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門匕荸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來践惑,“玉大人,你說我怎么就攤上這事。” “怎么了烈掠?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長取董。 經(jīng)常有香客問我蹂午,道長晚胡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任沙咏,我火速辦了婚禮吆豹,結(jié)果婚禮上衷快,老公的妹妹穿的比我還像新娘调窍。我一直安慰自己帝璧,他們只是感情好渴庆,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布卓缰。 她就那樣靜靜地躺著总寒,像睡著了一般年枕。 火紅的嫁衣襯著肌膚如雪囱怕。 梳的紋絲不亂的頭發(fā)上台丛,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天鉴未,我揣著相機與錄音钢属,去河邊找鬼宁否。 笑死台谊,一個胖子當著我的面吹牛盐须,可吹牛的內(nèi)容都是我干的塑径。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼骏庸,長吁一口氣:“原來是場噩夢啊……” “哼一姿!你這毒婦竟也來了蛉顽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎粤咪,沒想到半個月后某筐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抄囚,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡谬哀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年充蓝,在試婚紗的時候發(fā)現(xiàn)自己被綠了涝焙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡疲牵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情腰鬼,我是刑警寧澤炊豪,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響坊谁,放射性物質(zhì)發(fā)生泄漏鬓椭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一缤灵、第九天 我趴在偏房一處隱蔽的房頂上張望富蓄。 院中可真熱鬧口注,春花似錦君珠、人聲如沸乐导。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒲牧。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背秃诵。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工煞抬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留霜大,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓革答,卻偏偏與公主長得像战坤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子残拐,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 概述在iOS開發(fā)中UITableView可以說是使用最廣泛的控件途茫,我們平時使用的軟件中到處都可以看到它的影子,類似...
    liudhkk閱讀 9,035評論 3 38
  • UITableViewCell 父類是UIView UITableView的每一行都是一個UITableViewC...
    翻這個墻閱讀 6,596評論 0 1
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,139評論 30 470
  • 小仙女們好啊 本人是一個學生馬上高三 寫這個也是因為對這方面很感興趣 希望幫到一些跟我一樣平時沒有太多零花錢又想...
    而后知酒濃閱讀 751評論 0 6
  • 1.你若不勇敢溪食,沒人替你堅強囊卜。 2.平凡的腳步也可以走完偉大的行程。 3.自己打敗自己的遠遠多于比別人打敗的错沃。 4...
    維納斯的丘比特閱讀 193評論 0 1