1. 程式人生 > >tableview 高度適配內容(高度隨著cell行數變化而動態變化)及(監聽contentsize變化)

tableview 高度適配內容(高度隨著cell行數變化而動態變化)及(監聽contentsize變化)

//評論佈局

-(void)drawPingLunViewWithArr:(NSMutableArray *)arrData{

self.pinTab = [[UITableViewalloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_WIDTH) style:UITableViewStylePlain];

[self.contentViewaddSubview:self.pinTab];

[self.pinTabmas_remakeConstraints:^(MASConstraintMaker *make) {

make.top.mas_equalTo

(self.szdz_view.mas_bottom).mas_offset(TEXT_EDGE_DISTANCE);

make.left.right.mas_equalTo(self.contentView);

make.height.mas_equalTo(200*arrData.count+60+40+260+40);

}];

[self.pinTablayoutIfNeeded];

self.pinTab.delegate = self;

self.pinTab.dataSource = self;

self.pinTab.scrollEnabled = YES;

self.pinTab.bounces

= NO;

self.pinTab.estimatedRowHeight = 100;

self.pinTab.rowHeight = UITableViewAutomaticDimension;

[self.pinTabregisterClass:[UITableViewCellclass] forCellReuseIdentifier:@"cell"];

self.pinTab.separatorStyle = UITableViewCellSeparatorStyleNone;

//新增標題

self.pinTab.tableHeaderView = [[UIViewalloc]init];

[

self.pinTabregisterClass:[PingLunXQTabCellclass] forCellReuseIdentifier:@"PingLunXQTabCell"];

[self.pinTabregisterClass:[ShopXQXiangSiTabCellclass] forCellReuseIdentifier:@"ShopXQXiangSiTabCell"];

     //新增觀察控制元件的contentSize變化

[self.pinTabaddObserver:selfforKeyPath:@"contentSize"options:0context:NULL];

}

//監聽contentSize變化改變約束

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {

CGRect frame = self.pinTab.frame;

frame.size = self.pinTab.contentSize;

[self.pinTabmas_remakeConstraints:^(MASConstraintMaker *make) {

make.top.mas_equalTo(self.szdz_view.mas_bottom).mas_offset(TEXT_EDGE_DISTANCE);

make.left.right.mas_equalTo(self.contentView);

make.height.mas_equalTo(frame.size.height);

}];

}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

return2;

}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

if (section==0) {

return 2;

} else {

return 1;

}

}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

if (indexPath.section==0) {

PingLunXQTabCell *cell = [tableView dequeueReusableCellWithIdentifier:@"PingLunXQTabCell"];

cell.selectionStyle = UITableViewCellSelectionStyleNone;

cell.vc = self;

cell.arrImgv = [@[@"2"] mutableCopy];//控制圖片顯隱性

return cell;

}else{

ShopXQXiangSiTabCell*cell = [tableView dequeueReusableCellWithIdentifier:@"ShopXQXiangSiTabCell"];

cell.selectionStyle = UITableViewCellSelectionStyleNone;

cell.vc = self;

return cell;

}

}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

[tableView deselectRowAtIndexPath:indexPath animated:NO];

}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

returnUITableViewAutomaticDimension;

}

//頭高度

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{

return60.f;

}

//尾高度

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{

return30.f;

}

//表頭

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{

UIView *hv = [[UIViewalloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 60)];

hv.backgroundColor = [UIColorwhiteColor];

if (section==0) {

self.pinLun_numL = [[UILabel alloc]init];

[hv addSubview:self.pinLun_numL];

self.pinLun_numL.font = MIDDLE_LIT_FONT;

self.pinLun_numL.textColor = TEXT_HEX_MID_GRAY;

[self.pinLun_numL mas_makeConstraints:^(MASConstraintMaker *make) {

make.left.mas_equalTo(hv.mas_left).mas_offset(TEXT_EDGE_DISTANCE);

make.centerY.mas_equalTo(hv.mas_centerY);

}];

self.pinLun_numL.text = [NSString stringWithFormat:@"評論(%ld)",12];

UIImageView *pl_imgv = [[UIImageView alloc]init];

pl_imgv.userInteractionEnabled = YES;

[hv addSubview:pl_imgv];

pl_imgv.image = [UIImage imageNamed:@"s_d_xiangyoujiantou"];

[pl_imgv mas_makeConstraints:^(MASConstraintMaker *make) {

make.right.mas_equalTo(hv).mas_offset(-TEXT_EDGE_DISTANCE);

make.centerY.mas_equalTo(hv.mas_centerY);

make.size.mas_equalTo(CGSizeMake(6, 10));

}];

self.pingLun_fenL = [[UILabel alloc]init];

[hv addSubview:self.pingLun_fenL];

self.pingLun_fenL.font = MIDDLE_LIT_FONT;

[self.pingLun_fenL mas_makeConstraints:^(MASConstraintMaker *make) {

make.right.mas_equalTo(pl_imgv.mas_right).mas_offset(-TEXT_LINE_DISTANCE);

make.centerY.mas_equalTo(hv.mas_centerY);

}];

self.pingLun_fenL.attributedText = [selfgetAttriStringWithPingLunString:@"99%"];

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickedPingLunXiangQing:)];

[hv addGestureRecognizer:tap];

} else {

UILabel *lab_xs = [[UILabel alloc]init];

[hv addSubview:lab_xs];

lab_xs.font = MIDDLE_LIT_FONT;

lab_xs.textColor = TEXT_HEX_MID_GRAY;

lab_xs.text = @"相似商品";

[lab_xs mas_makeConstraints:^(MASConstraintMaker *make) {

make.centerX.mas_equalTo(hv.mas_centerX).mas_offset(TEXT_LINE_DISTANCE+24/2);

make.bottom.mas_equalTo(hv.mas_bottom);

}];

UIImageView *xs_imgv = [[UIImageView alloc]init];

xs_imgv.userInteractionEnabled = YES;

[hv addSubview:xs_imgv];

xs_imgv.image = [UIImage imageNamed:@"s_d_xiangsi-biao"];

[xs_imgv mas_makeConstraints:^(MASConstraintMaker *make) {

make.right.mas_equalTo(lab_xs.mas_left).mas_offset(-TEXT_LINE_DISTANCE);

make.centerY.mas_equalTo(lab_xs.mas_centerY);

make.size.mas_equalTo(CGSizeMake(24, 24));

}];

}

return hv;

}

//區尾

-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{

UIView*view = [[UIViewalloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH,30)];

view.backgroundColor = [UIColorwhiteColor];

if (section==0) {

UIButton *btn = [UIButtonbuttonWithType:UIButtonTypeCustom];

[view addSubview:btn];

btn.titleLabel.font = LITTLE_L_FONT;

[btn setTitleColor:TEXT_HEX_LIGHT_L_GRAYforState:UIControlStateNormal];

btn.layer.cornerRadius = 20/2;

btn.layer.borderColor = TEXT_HEX_LIGHT_L_GRAY.CGColor;

btn.layer.borderWidth = 1;

[btn mas_makeConstraints:^(MASConstraintMaker *make) {

make.center.mas_equalTo(view);

make.size.mas_equalTo(CGSizeMake(106, 20));

}];

[btn setTitle:@"檢視全部評論" forState:UIControlStateNormal];

[btn addTarget:selfaction:@selector(clickedChaKanPingLun:) forControlEvents:UIControlEventTouchUpInside];

} else {

UILabel *lab_xs = [[UILabel alloc]init];

[view addSubview:lab_xs];

lab_xs.font = MIDDLE_LIT_FONT;

lab_xs.textColor = TEXT_HEX_LIGHT_L_GRAY;

lab_xs.text = @"上拉檢視商品詳情";

[lab_xs mas_makeConstraints:^(MASConstraintMaker *make) {

make.centerX.mas_equalTo(view.mas_centerX).mas_offset(TEXT_LINE_DISTANCE+16/2);

make.centerY.mas_equalTo(view.mas_centerY);

}];

self.shanglaImgv = [[UIImageView alloc]init];

self.shanglaImgv.userInteractionEnabled = YES;

[view addSubview:self.shanglaImgv];

self.shanglaImgv.image = [UIImageimageNamed:@"s_d_xiangshang-biao"];

[self.shanglaImgv mas_makeConstraints:^(MASConstraintMaker *make) {

make.right.mas_equalTo(lab_xs.mas_left).mas_offset(-TEXT_LINE_DISTANCE);

make.centerY.mas_equalTo(view.mas_centerY);

make.size.mas_equalTo(CGSizeMake(24, 24));

}];

}

return view;

}