IOS tableViewCell adaptive height third-class library, tablecell adaptive height

Source: Internet
Author: User

IOS tableViewCell adaptive height third-class library, tablecell adaptive height

There are many third-release libraries encapsulated by Daniel in github, including a class library with adaptive cell height.

: Https://github.com/gsdios/SDAutoLayout

Model class

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

Controller

#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

 

 

 

 

 

Code of the specific custom 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

 

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.