詳解iOS tableViewCell自適應(yīng)高度 第三發(fā)類庫
在github中有許多大牛封裝好的第三發(fā)類庫,其中有個(gè)自適應(yīng)cell高度的類庫
下載地址:https://github.com/gsdios/SDAutoLayout
model類
commentsModel #import "JSONModel.h" #import "getCommentData.h" @interface commentsModel : JSONModel @property(nonatomic,copy)NSArray<getCommentData> *commentList; @end #import "commentsModel.h" @implementation commentsModel @end getCommentData #import "JSONModel.h" @protocol getCommentData @end @interface getCommentData : JSONModel @property(nonatomic,copy)NSString *message; @property(nonatomic,copy)NSString *nickName; @property(nonatomic,copy)NSString *createTimeStr; @end #import "getCommentData.h" @implementation getCommentData @end
控制器
#import "commentsTableViewController.h" #import "commentsModel.h" #import "commentCell.h" @interface commentsTableViewController () @property(nonatomic,strong)NSArray *commentsArray; @end @implementation commentsTableViewController -(NSArray *)commentsArray{ if (_commentsArray==nil) { NSData *data=[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"comment_list.json" ofType:nil]]; commentsModel *commensM=[[commentsModel alloc]initWithData:data error:nil]; _commentsArray=commensM.commentList; } return _commentsArray; } - (void)viewDidLoad { [super viewDidLoad]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.commentsArray.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *ID=@"comment"; commentCell *cell=[tableView dequeueReusableCellWithIdentifier:ID]; if (cell==nil) { cell=[[commentCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID]; } cell.commentData=self.commentsArray[indexPath.row]; return cell; } -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ return [self cellHeightForIndexPath:indexPath cellContentViewWidth:[self cellContentViewWith]]; } -(CGFloat)cellContentViewWith{ CGFloat width=[UIScreen mainScreen].bounds.size.width; if ([UIApplication sharedApplication].statusBarOrientation != UIInterfaceOrientationPortrait && [[UIDevice currentDevice].systemVersion floatValue] < 8) { width = [UIScreen mainScreen].bounds.size.height; } return width; } @end
具體自定義cell的代碼
#import <UIKit/UIKit.h> @class getCommentData; @interface commentCell : UITableViewCell @property(nonatomic,strong)getCommentData *commentData; @property(nonatomic,strong)UILabel *nameLabel; @property(nonatomic,strong)UILabel *titleLabel; @property(nonatomic,strong)UILabel *dateLabel; @end #import "commentCell.h" #import "commentsModel.h" @implementation commentCell -(void)setCommentData:(getCommentData *)commentData{ _commentData=commentData; _titleLabel.text=commentData.message; _dateLabel.text=commentData.createTimeStr; _nameLabel.text=commentData.nickName; } - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { [self setup]; } return self; } -(void)setup{ _nameLabel=[UILabel new]; [self.contentView addSubview:_nameLabel]; _nameLabel.textColor=[UIColor colorWithRed:0.891 green:0.549 blue:0.073 alpha:1.000]; _nameLabel.font=[UIFont systemFontOfSize:15]; _nameLabel.numberOfLines=1; _titleLabel=[UILabel new]; [self.contentView addSubview:_titleLabel]; _titleLabel.textColor=[UIColor darkGrayColor]; _titleLabel.font=[UIFont systemFontOfSize:15]; _titleLabel.numberOfLines=0; _dateLabel=[UILabel new]; [self.contentView addSubview:_dateLabel]; _dateLabel.textColor=[UIColor colorWithRed:0.679 green:0.166 blue:0.828 alpha:1.000]; _dateLabel.font=[UIFont systemFontOfSize:15]; _dateLabel.numberOfLines=1; CGFloat margin=10; UIView *contentView=self.contentView; _nameLabel.sd_layout .leftSpaceToView(contentView,margin) .topSpaceToView(contentView,margin) .rightSpaceToView(contentView,margin) .heightIs(20); _titleLabel.sd_layout .leftSpaceToView(contentView,margin) .topSpaceToView(_nameLabel,2) .rightSpaceToView(contentView,margin) .autoHeightRatio(0); _dateLabel.sd_layout .leftSpaceToView(contentView,margin) .topSpaceToView(_titleLabel,5) .heightIs(20) .widthIs(150); [self setupAutoHeightWithBottomViewsArray:@[_titleLabel,_dateLabel,_nameLabel] bottomMargin:margin]; } - (void)awakeFromNib { } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; } @end
- IOS UITableView和UITableViewCell的幾種樣式詳細(xì)介紹
- IOS UITableViewCell詳解及按鈕點(diǎn)擊事件處理實(shí)例
- 全面解析iOS應(yīng)用中自定義UITableViewCell的方法
- 詳解ios中自定義cell,自定義UITableViewCell
- iOS App開發(fā)中使用及自定義UITableViewCell的教程
- 詳解IOS UITableViewCell 的 imageView大小更改
- UITableViewCell在編輯狀態(tài)下背景顏色的修改方法
- iOS中使用UItableviewcell實(shí)現(xiàn)團(tuán)購和微博界面的示例
- iOS優(yōu)化UITableViewCell高度計(jì)算的一些事兒
- 你應(yīng)該知道的tableViewCell行高計(jì)算處理
相關(guān)文章
IOS Xcode調(diào)試常用命令和斷點(diǎn)整理
這篇文章主要介紹了IOS Xcode調(diào)試常用命令和斷點(diǎn)整理的相關(guān)資料,這里對(duì)IOS Xcode調(diào)試常用命令進(jìn)行了總結(jié),需要的朋友可以參考下2016-12-12Objective-C中編程中一些推薦的書寫規(guī)范小結(jié)
這篇文章主要介紹了Objective-C的一些編程書寫規(guī)范小結(jié),包括類與方法等面向?qū)ο缶幊滔嚓P(guān)的代碼編寫風(fēng)格,需要的朋友可以參考下2016-04-04禁止iPhone Safari video標(biāo)簽視頻自動(dòng)全屏的辦法
本篇文章給大家分析有沒有辦法禁止iPhone Safari video標(biāo)簽視頻自動(dòng)全屏,以下給出好多種情況分享,感興趣的朋友可以參考下2015-09-09iOS仿小紅書呼吸燈動(dòng)畫(核心動(dòng)畫和定時(shí)器)兩種方式實(shí)現(xiàn)
本篇文章主要介紹了iOS仿小紅書呼吸燈動(dòng)畫(核心動(dòng)畫和定時(shí)器)兩種方式實(shí)現(xiàn),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-04-04iOS NSURLSessionDownloadTask設(shè)置代理文件下載的示例
本篇文章主要介紹了iOS NSURLSessionDownloadTask設(shè)置代理文件下載的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01iOS實(shí)現(xiàn)攝像頭實(shí)時(shí)采集圖像
這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)攝像頭實(shí)時(shí)采集圖像,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04