tableview 高度适配内容(高度随着cell行数变化而动态变化)及(监听contentsize变化)
2017-10-23 08:38
495 查看
//评论布局
-(void)drawPingLunViewWithArr:(NSMutableArray *)arrData{
self.pinTab = [[UITableView
alloc]initWithFrame:CGRectMake(0,
0, SCREEN_WIDTH,
SCREEN_WIDTH) style:UITableViewStylePlain];
[self.contentView
addSubview:self.pinTab];
[self.pinTab
mas_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.pinTab
layoutIfNeeded];
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.pinTab
registerClass:[UITableViewCell
class] forCellReuseIdentifier:@"cell"];
self.pinTab.separatorStyle =
UITableViewCellSeparatorStyleNone;
//添加标题
self.pinTab.tableHeaderView = [[UIView
alloc]init];
[self.pinTab
registerClass:[PingLunXQTabCell
class] forCellReuseIdentifier:@"PingLunXQTabCell"];
[self.pinTab
registerClass:[ShopXQXiangSiTabCell
class] forCellReuseIdentifier:@"ShopXQXiangSiTabCell"];
//添加观察控件的contentSize变化
[self.pinTab
addObserver:self
forKeyPath:@"contentSize"
options:0
context: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.pinTab
mas_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{
return 2;
}
-(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{
return
UITableViewAutomaticDimension;
}
//头高度
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 60.f;
}
//尾高度
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 30.f;
}
//表头
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *hv = [[UIView
alloc]initWithFrame:CGRectMake(0,
0, SCREEN_WIDTH,
60)];
hv.backgroundColor = [UIColor
whiteColor];
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 = [self
getAttriStringWithPingLunString:@"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 = [[UIView
alloc]initWithFrame:CGRectMake(0,
0, SCREEN_WIDTH,30)];
view.backgroundColor = [UIColor
whiteColor];
if (section==0) {
UIButton *btn = [UIButton
buttonWithType:UIButtonTypeCustom];
[view addSubview:btn];
btn.titleLabel.font =
LITTLE_L_FONT;
[btn setTitleColor:TEXT_HEX_LIGHT_L_GRAY
forState: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:self
action:@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 = [UIImage
imageNamed:@"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;
}
-(void)drawPingLunViewWithArr:(NSMutableArray *)arrData{
self.pinTab = [[UITableView
alloc]initWithFrame:CGRectMake(0,
0, SCREEN_WIDTH,
SCREEN_WIDTH) style:UITableViewStylePlain];
[self.contentView
addSubview:self.pinTab];
[self.pinTab
mas_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.pinTab
layoutIfNeeded];
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.pinTab
registerClass:[UITableViewCell
class] forCellReuseIdentifier:@"cell"];
self.pinTab.separatorStyle =
UITableViewCellSeparatorStyleNone;
//添加标题
self.pinTab.tableHeaderView = [[UIView
alloc]init];
[self.pinTab
registerClass:[PingLunXQTabCell
class] forCellReuseIdentifier:@"PingLunXQTabCell"];
[self.pinTab
registerClass:[ShopXQXiangSiTabCell
class] forCellReuseIdentifier:@"ShopXQXiangSiTabCell"];
//添加观察控件的contentSize变化
[self.pinTab
addObserver:self
forKeyPath:@"contentSize"
options:0
context: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.pinTab
mas_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{
return 2;
}
-(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{
return
UITableViewAutomaticDimension;
}
//头高度
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 60.f;
}
//尾高度
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 30.f;
}
//表头
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *hv = [[UIView
alloc]initWithFrame:CGRectMake(0,
0, SCREEN_WIDTH,
60)];
hv.backgroundColor = [UIColor
whiteColor];
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 = [self
getAttriStringWithPingLunString:@"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 = [[UIView
alloc]initWithFrame:CGRectMake(0,
0, SCREEN_WIDTH,30)];
view.backgroundColor = [UIColor
whiteColor];
if (section==0) {
UIButton *btn = [UIButton
buttonWithType:UIButtonTypeCustom];
[view addSubview:btn];
btn.titleLabel.font =
LITTLE_L_FONT;
[btn setTitleColor:TEXT_HEX_LIGHT_L_GRAY
forState: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:self
action:@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 = [UIImage
imageNamed:@"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;
}
相关文章推荐
- ios开发笔记之如何让tableView根据文本内容动态改变cell的高度
- UItableView Cell 高度自适应--随着多个label内容变化自适应
- [ios]tableView内部cell因内容大小变换 而变化 sizeWithFont:constrainedToSize: lineBreakMode:
- Swift设置Table View的Cell中Lable自适应内容高度的
- 【iOS知识学习】_iOS动态改变TableView Cell高度
- 动态改变tableview的cell的高度
- ios TableView那些事(三十 五)TableView 单选操作使用Autolayout实现UITableView的Cell动态布局和高度动态改变
- ios TableView那些事(三十 五)TableView 单选操作使用Autolayout实现UITableView的Cell动态布局和高度动态改变
- 如何用约束设置UITableView的tableHeaderView,其中tableHeaderView的高度是动态变化的
- Swift iOS tableView static cell动态计算高度
- IOS tableView cell动态高度 (autoLayout)
- tableviewcell 动态计算cell高度导致tableview滑动卡顿怎么办??
- Swift iOS tableView static cell动态计算高度
- Qt tableview 使用ComboBox作为delegate时,实现单个cell中的comboBox的item动态变化以及独特性
- iOS - UITableView cell中添加展开关闭的功能(cell高度动态变化)
- 商品详情页面特殊制作,获取网页的高度,collectionView根据内容的变化其高度也随着变化
- 【iOS知识学习】_iOS动态改变TableView Cell高度
- IOS TableView的Cell高度自适应,UILabel自动换行适应(转载)
- iOS 给tableView 每行设置预估行高estimatedRowHeight,达到cell高度的自适应
- iOS UITableView动态改变tableHeaderView的高度