在github中有许多大牛封装好的第三发类库,其中有个自适应cell高度的类库
下载地址:https://github.com/gsdios/sdautolayout
model类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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 |
控制器
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
|
#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的代码
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#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 |