1. 程式人生 > >UITableViewCell高度自適應Label高度

UITableViewCell高度自適應Label高度

一般在開發的時候,寫的Cell, 一般不會是絕對等高的,寬就不說了,一般就那麼寬

高度隨著cell裡面內容的變化而變化的情況是常有的事

作為一枚菜鳥,我就知道兩種方法可以讓cell自適應高,先說一種不用自動佈局的

1.自適應cell高(手動版)

核心方法:這個方法只能在iOS7之後使用,之前的方法很麻煩,就不說了(說白了就是根據字型大小計算你要填進去的字串的size,前提是label的行數設定為0,也就是無限行)

- (CGSize)getTextHeightWithString:(NSString *)string{
   CGRect rect = [string boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15]} context:nil];
    return  rect.size;
}
這裡的幾個引數:

1.就是放在一個多大的容器裡(虛擬的容器,不然他怎麼知道啥時候換行,當然也就不知道寬度),

這裡基本就跟你的label一樣寬,或者小一點,自己拿捏,寬度當然是不限,也可以填0

2.一系列引數,這裡一般就用這倆,可以點進去看一下(好吧,其實我也不懂)

3.字串屬性,這裡不贅述。可以調顏色字型大小。

4.沒用過,直接nil

得到一個CGSize,就是這段字串在剛才自己設定那個虛擬容器裡的長寬,

如果不滿一行,當然返回的寬就是字串的寬,而不是你設定的虛擬框的寬,這個真的很方便(之前不滿一行還得另外算)

如果只是需要高度,不妨直接返回rect.size.height 這樣,直接拿到的高度就可以填到設定行高的代理方法裡了

如果cell裡有圖片的話,在設定行高方法里加上圖片高度就ok


2.利用autolayout

建立cell的自定義子類,加入xib,或者直接storyboard加入自定義cell

然後做約束,最重要的約束就是不要限制死cell裡label的高,約束label的下邊界和cell的下邊界的距離

然後,就是在程式碼中新增兩句話

//自動適應高(前提是做了自動佈局的約束 )

tableView.estimatedRowHeight = tableView.rowheight //提供一個預估的高度值(這裡其實填多少都行,一般就你的xib裡cell多高,這個就填多高)

tableView.rowheight = UiTableViewAutomaticDimension

這個是直接設定tableView所有的cell,如果您另有所求,可以呼叫代理方法裡設定預估高度和高度的方法

執行程式,噹噹噹當,完成,如此簡單。

好了,該說這個的缺點了,當你的cell中有不能確定高度的圖片時。。。。瘋掉了,這約束怎麼做。

沒辦法,只能在程式碼裡的代理方法裡用高度加了(也可以做約束,可以實現,但是效果不好,很多圖片無法很好適應,所以不推薦)

相關推薦

UITableViewCell高度適應Label高度

一般在開發的時候,寫的Cell, 一般不會是絕對等高的,寬就不說了,一般就那麼寬 高度隨著cell裡面內容的變化而變化的情況是常有的事 作為一枚菜鳥,我就知道兩種方法可以讓cell自適應高,先說一種不用自動佈局的 1.自適應cell高(手動版) 核心方法:這個方法只能在iO

怎麼讓Html的高度適應螢幕高度

在寫css靜態頁面的時候讓Html的高度自適應螢幕高度是一個常見的需求,比如你有一個需要置底的bottom按鈕,需要在內容不足一屏的時候顯示在螢幕的底部,在內容超過一屏的時候顯示在所有內容的底部。

仿小紅書根據圖片高度適應viewpager高度輪播圖

之前不瞭解小紅書,直到有一天經理說看見一個他想要的效果,跟小紅書一樣,趕緊下載小紅書來看看,寫起來賊費勁的一個自適應viewpager高度的輪播圖。 效果圖: 直接粘程式碼了:main_activity <?xml version="1.0" encodi

UITableViewCell圖片高度適應問題

  對於一般UI設計,我們都把圖片的寫死,但是經常有種需求是需要我們自動根據圖片寬高比實現圖片的自動縮放功能。這裡有多種辦法可以解決這種問題,常見的問題處理方式有如下幾種: 1.後臺返回圖片的尺寸大小,然後前端根據圖片size調整響應的高度,一般寬度定死。 2.利用網路圖片框架

Masonry適配——(7)UITableView中定義UITableViewCell高度適應及計算

在UITableView列表的使用中,因為在自定義的UITableViewCell中頁面相對複雜,所以會出現每一個cell都有不同的高度。這時候就需要根據實際內容進行cell的更新約束,其實說到底也就是哪些UI子檢視應該顯示,或隱藏,哪些UILabel標籤高度是這個數值,

UItableView Cell 高度適應--隨著多個label內容變化適應

1.cell .h檔案 // WorkReportCell.h // GOSProject // // Created by on 2017/5/11. // Copyright © 2017年 All rights reserved. // #import

放在UITableVIewCell上的webView的高度適應的問題

一、前言 前段時間,群裡的小夥伴們經常問題UITableViewCell中要放一個UIWebView,怎麼做呢?怎麼算高度?怎麼讓它自適應?這一聽感覺挺不好處理的。 因為UIWebView通過代理載入的話,還沒有計算高度出來,cell的heightForRowAtIndex

IOS8 之後UITableViewCell自動佈局高度適應

IOS8之後 如果使用自動佈局,就不用再需要手動計算UITableViewCell高度 注意事項: 1.Cell高度設定自動適配,預設高度 _tableView.rowHeight = UITableViewAutomaticDimension; _tableView

css之兩欄布局左側固定右側高度適應

iscis pyo class cdh man db4 內容 tmx usb css兩欄布局之左側固定右側高度自適應先看這樣的html+css結構: .main { width: 900px; overflow:hidden; m

CSS完美實現iframe高度適應(支持跨域)

真的 高度 org lns nal aid .org bsp 方法 Iframe的強大功能偶就不多說了,它不但被開發人員經常運用,而且黑客們也常常使用它,總之用過的人知道它的強大之處,但是Iframe有個致命的“BUG”就是iframe的高度無法自動適應,這一點讓很多人都頭

textarea 高度適應

100% important har .proto paste lin arr property value 一、$(‘textarea‘).keyup(function () { $(this).height(this.scrollHeight); });效果一般

textarea高度適應

area 方案 any 復用 his input extra function csdn textarea高度自適應 有時候寫表單的時候,會有一個 備註框textarea。因為textarea不支持自適應高度,就是定好高度或者是行數之後,超出部分就會顯示滾動條,看起來不

iframe高度適應子頁面高度 使用onload屬性

sca height init window 屬性 fun frame var scroll <!DOCTYPE html> <html> <head> <title>測試</title> <

textarea高度適應(可設置最大高度

換行 hid fun utf-8 cti html logs type att <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

實現不同分辨率下高度適應

tex 微軟雅黑 java utf har -c 自適應 height ont html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8">

CSS高度適應 height:100%;

默認 blog logs 但是 style 放置 htm ctype 瀏覽器 在初次嘗試高度自適應時都會遇到這樣的問題: 對象的heith:100%; 並不能直接產生實際效果 為什麽呢?之所以沒有效果,與瀏覽器的解析方式有一定關系,查看下面代碼 <!DOCTYPE

iframe高度適應

borde 16px div 後者 size 我們 第一次用 一次 edit   第一次用iframe標簽代替ajax異步刷新去做後天管理系統,發現iframe的確是個好東西。但有個最大的問題就是——高度不能自適應,要麽設置死,要麽用js去動態獲取目標資源body的heig

高度適應,內容是浮動元素

flow wrap con after 方法 splay content height borde 可以有兩種方法: 1.添加overflow:hidden; 2.添加偽元素 <style>   .wrap{     border:1px solid b

在文章高度適應的時候

高度自適應 min oom clear 識別 pla 需要 after 最小 在文章高度自適應的時候需要設置文章的div的最小高度。min-height:300px;IE6不識別min-height需要設置_height:300px;_height為IE6識別。而且還要為父

tableviewheaderview 高度適應

reat sco uitable cgrect label 約束 自適應 any dem 完全使用約束 使tableviewheaderview 的高度自適應,以後再也不用去計算headerview的高度後再去改變高度了, demo代碼: #import "ViewCon