1. 程式人生 > >AutoLayout實戰:cell高度不固定的UITableView

AutoLayout實戰:cell高度不固定的UITableView

在沒有AutoLayout之前,自定義一個高度不固定的cell是相當麻煩的。你需要寫非常多計算尺寸的程式碼,在拿到資料後,需要計算cell裡面每一個控制元件的尺寸才能最終確定cell的高度。如果你已經受夠了各種計算尺寸的程式碼。那麼本篇文章或許會對你有一些幫助,本文會說明如何利用AutoLayout優雅的實現具有動態高度的cell

在開始之前,先看下效果圖,知道將要完成神馬東西。

  • 高度隨著內容變化,內容越多,高度就越高
  • 內容label,就是顯示天氣真好的label,最多顯示3行

自定義Cell,繼承自UITableViewCell

1
2
3 4 5 6 7
@interface GJCell : UITableViewCell
@property (nonatomic, weak) UIImageView *customImageView;
@property (nonatomic, weak) UILabel *title;
@property (nonatomic, weak) UILabel *subtitle;
@end
  • customImageView用於顯示頭像
  • title用於顯示暱稱
  • subtitle用於顯示內容

建立UITableView並準備資料

1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
#import "GJCell.h"
#import "Masonry.h"
static NSString * const GJCellIndentifier = @"GJCell";
@interface ViewController () <UITableViewDataSource, UITableViewDelegate
>
@property (nonatomic, strong) NSArray *datas; @property (nonatomic, weak) UITableView *tableView; @end @implementation ViewController #pragma mark - Life Cycle - (void)viewDidLoad { [super viewDidLoad]; [self setupData]; [self setupView]; } - (void)setupData { NSDictionary *data1 = @{@"icon": @"myIcon", @"name": @"GJBlog", @"content": @"今天天氣真好啊"}; NSDictionary *data2 = @{@"icon": @"myIcon", @"name": @"GJBlogGJBlogGJBlog", @"content": @"今天天氣真好啊今天天氣真好啊今天天氣真好啊今天天氣真好啊"}; NSDictionary *data3 = @{@"icon": @"myIcon", @"name": @"GJBlogGJBlogGJBlogGJBlogGJBlog", @"content": @"今天天氣真好啊今天天氣真好啊今天天氣真好啊今天天氣真好啊今天天氣真好啊今天天氣真好啊今天天氣真好啊"}; self.datas = @[data1, data2, data3]; } - (void)setupView { UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; [tableView registerClass:[GJCell class] forCellReuseIdentifier:

相關推薦

AutoLayout實戰:cell高度固定UITableView

在沒有AutoLayout之前,自定義一個高度不固定的cell是相當麻煩的。你需要寫非常多計算尺寸的程式碼,在拿到資料後,需要計算cell裡面每一個控制元件的尺寸才能最終確定cell的高度。如果你已經受夠了各種計算尺寸的程式碼。那麼本篇文章或許會對你有一些幫助,本文會

父元素為一個div,寬度高度固定,子元素是一個塊狀元素,寬高已知,如何實現子元素在父元素內水平、垂直居中?

父元素為一個div,子元素是一個塊狀元素,寬高已知,如何實現子元素在父元素內水平、垂直居中?  1、 //利用相對定位,讓子元素垂直居中 <!DOCTYPE html> <html> <head> <title><

頁面主體高度固定,如何讓頁面的footer始終在最底部

有時候我們的頁面主體高度並不固定,而我們又不想讓footer跟著主體高度變化而跑動,也許您會想到使用position:fixed;但是這並不能達到理想的要求,下面是我曾經在實際工作中用到的一種方法:

彈層高度固定,始終上下居中(js方法)

html: <div class="TopContainer">   <div class="TopContainMain">   <p>請您先進行實名認證   </p>   </div>   <span c

固定文字在固定高度寬度下垂直水平居中

居中 多少 vertica min tab splay 垂直 vertical eight 1 <div> 2 <span>BZJ-1300/1450/1600 Automatic 3 Flute Laminator</span> 4

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

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

如何在Autolayout的模式下動態設定 UITableView的 tableHeader 的高度

 最近遇到一個 問題,就是使用單獨的一個 xib檔案 autolayout來建立一個 UITableView的 tableHeader.  這個 xib是一個動態高度的View。        所以就有個問題,用xib 建立完的 View是 固定高度的,如果直接用 :

iOS中使用AutoLayout動態調整Cell高度

之前做的不同高度的cell都是利用程式碼在HeightForRowAtIndexPath方法中計算cell高度來實現的,突然想用AL來實現一下動態Cell高度設定,先看看成果動圖: 下面提供主要思路程式碼,類似資料填充的就不提了。 建立自定義Cell類A

【自用】UITableView每個cell高度自適應

首先說明  此部落格內容是摘自別人部落格的  傳送門 http://blog.sunnyxx.com/2015/05/17/cell-height-calculation/ 在此感謝 這篇文章是我和我們團隊最近對 UITableViewCell 利用 AutoLay

四種方法實現UITableViewcell高度自動計算

具體實現程式碼 iOS8時代的高度計算非常簡單,下面兩行程式碼就搞定了,非常方便。 前提是需要設定好在垂直高度上的約束。 - (void)viewDidLoad{ self.tableView.estimatedRowHeight = 80.0f; self.tableView

CSS實戰技巧:大小固定,多行文字的垂直居中

1.單行文字 html程式碼 <div> <p>單行文字</p> </div> css程式碼 div { wi

iOS開發-寫給萌新們的UITableViewCell高度自適應方法

Emmmm…. 時間過得好快,一晃眼一年就過去了,開啟塵封已久的CSDN部落格,發現自己墮落了無數時光,但人活著總是要混口飯吃的嘛,所以再度起航,鍵盤敲起來,文章寫起來。希望大家能支援我這個垃圾猿,好啦切入正題。 皮一下很開心 上週在技術群裡看萌新們

Swift之動態適配UITableViewcell高度

首先在Xib中拖一個UITableView,讓其充滿整個檢視控制器,並遵守實現UITableViewDelegate,UITableViewDataSource協議; 其次,新建一個繼承於UItabl

固定寬度 浮動元素實現 水平居中

ext hang 問題 http 間距 size center logs 技術 兩種方法 前提 父元素 overflow:hidden;子元素float:left;寬度都是不固定的 1.父元素 text-align:center;font-size:0;子元素 disp

字段順序固定的正則表達式

vid timestamp country 正則表達式 method 固定 aid html ann 正則 (?<logstream_country_isp_province>\d+\.\d+\.\d+\.\d+).*? \[(?<logstream_t

swiper裏面的,tab切換,不同的slide高度不一樣,外層高度何如隨之改變,如果裏面的每一屏的高度不一樣,那麽就會一直以高度最大的一個座位最外層的高度,總成了頁面內容少的那一頁有很大空白,改如何動態改變外層的高度

ide設置 就會 否則 location translate dir 最大的 ext 如果 解決方案:1.autoHeight: true;缺點:有明顯的跳動效果2.先給容器設固定高度,每次滑動多少時,改變當前tab頁的容器高度,我在實現是遇到一點小問題,代碼忘記保存了。

js參數順序固定的寫法

name function for eight spa some col 寫法 clas //代碼如下function doSomeThing(obj){ var adapter = { name:‘name‘, id:‘001‘,

div中 li寬度固定 ie6和ie7兼容自動換行

pwm https 不兼容 ofo http ace light href lan 我的li因為內容字數不一樣,所以寬度不固定,給他float:left屬性後,ie6和ie7不兼容,不自動換行!我給ul或者li: ul{white-space: nowrap} 屬性還是

css中固定寬高div與固定寬高div垂直居中的處理辦法

分配 css代碼 http min har 空間 -i dex round 固定高寬div垂直居中 如上圖,固定高寬的很簡單,寫法如下: 1 position: absolute; 2 left: 50%; 3 top: 50%; 4 width:200px;

python *args **kwargs,傳入固定的參數給函數,或者傳入很多的內容給函數,常用在構造函數中。

沒有 常用 但是 避免 內容 自動 基本 name 調用 ‘‘‘ 例1:展示*args的用法,傳入多個參數,不進行預先定義。 本例傳入了3個參數。沒有預先定義。在函數內自動生成元組() ‘‘‘ def q1(*args): print(‘例1‘) prin