實現UITabelView自適應高度的幾點注意事項

2022-08-05 05:39:11 字數 1910 閱讀 7531

我們設定單元格高度的時候

有固定高度的情況,通過:

self.tableview.rowheight=88;

也可以設定datasource中

- (cgfloat)tableview:(uitableview *)tableview heightforrowatindexpath:(nsindexpath *)indexpath {}

實現了這個方法後,rowheight的設定將無效。

我們平時用到的uitableview  讓其自動適應高度 我們可以

- (cgfloat)tableview:(uitableview *)tableview heightforrowatindexpath:(nsindexpath *)indexpath {}

這個資料來源**方法中實現 

uitableviewautomaticdimension

這種方法  但這個方法一般情況下可以。

下面我想說一下 我經常使用的方法 就是用sdautolayout的布局三方

sdautolayout有很詳細的uitableview的各種好的方法 這裡我們可義參考sdautolayout的官方demo 裡面有很詳細的參考**

首先就是在自定義的各種單元個裡 設定好各個空間的frame之後 在

- (instancetype)initwithstyle:(uitableviewcellstyle)style reuseidentifier:(nsstring *)reuseidentifier 

這個方法裡設定

提到這個方法 我還想多補充一句 就是曾經忽視導致遇到的坑 很久沒有解決 就是在重寫cell的時候 無法顯示子控制項 然後斷點除錯檢視發現初始化方法沒有走

並且一直看不清 原來是寫成了- (instancetype)initwithframe 這個方法 沒有很注意區分就這樣跳進了乙個坑  而且並不會很清楚地注意到這一點 

好了 言歸正傳 就是在這個方法裡新增號控制項之後 加一句  上**

- (instancetype)initwithstyle:(uitableviewcellstyle)style reuseidentifier:(nsstring *)reuseidentifier

return self;

}

[self setupautoheightwithbottomview:self.tagsview bottommargin:5];注意是這一句

然後在viewcontroller裡面的tableview的rowheight**方法裡面

return [self.tablev cellheightforindexpath:indexpath model:nil keypath:nil cellclass:[mineonetableviewcell class] contentviewwidth: [uiscreen mainscreen].bounds.size.width];

返回這個  model這裡為nil  到時候傳遞需要的額model即可

但是 這個方法有時候會遇到問題 就是當單元格很多並且自適應cell高度 然後**高度計算的時候 其實會有計算不出rowheight的問題  具體原因以後總結 

但是最好的方法 目前找到的就是

[self.tablev cellheightforindexpath:indexpath cellclass:[mineonetableviewcell class] cellcontentviewwidth:kscreenwidth celldatasetting:nil];使用這個方法來返回單元格的高度

這裡可以使用註冊的方式建立cell  這樣基本無論cell也可以自適應子控制項高度了 而且 tableview的rowheight也可以完全自適應不用的自定義cell的樣式的各種高度

反正使用很多次覺得這個很好用  sdautolayout還提供了很多方法 慢慢總結上傳

Android ImageView高度自適應

最近有個需求,是往乙個linearlayout中去新增imageview,imageview是動態生成的,然後設定imageview的屬性,但是不管怎麼設定scaletype,都達不到自己喜歡的狀態,顯示原圖大小的話會在imageview的上下有留白,如圖 初步猜想是由於原始 比較大,然後縮放後im...

flutter TextField換行自適應

先明確這種輸入文字框有哪些功能點?能夠自定義各種間距.主要是控制項外邊距 margin 內間距 padding 能夠自定義樣式.輸入框邊框 圓角 radius 描邊 border 顏色 字樣 大小,顏色 提示字樣 hint 自適應.字型大小變大控制項高度也變高同時保持指定的內外邊距.最重要的功能 多...

div模擬textarea以實現高度自適應例項頁面

使用很簡單,乙個普通的block元素上加個contenteditable true 就ok了,如下 true外面的引號甚至去掉都沒關係。contenteditable屬性雖是html5裡面的內容,但是ie似乎老早就支援此標籤屬性了。所以,相容性方面還是不用太擔心的。ok,最麻煩的模擬textarea...