tableview 高度适配内容(高度随着cell行数变化而动态变化)及(监听contentsize变化)

来源:互联网 发布:淘宝被扣48分怎么办 编辑:程序博客网 时间:2024/05/18 14:45


//评论布局

-(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{

    

    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 = [tableViewdequeueReusableCellWithIdentifier:@"PingLunXQTabCell"];

        cell.selectionStyle =UITableViewCellSelectionStyleNone;

        cell.vc = self;

        cell.arrImgv = [@[@"2"]mutableCopy];//控制图片显隐性

        return cell;

    }else{

        ShopXQXiangSiTabCell*cell = [tableViewdequeueReusableCellWithIdentifier:@"ShopXQXiangSiTabCell"];

        cell.selectionStyle =UITableViewCellSelectionStyleNone;

        cell.vc = self;

        return cell;

    }

}

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

    [tableView deselectRowAtIndexPath:indexPathanimated:NO];

    

    

}

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

    

    returnUITableViewAutomaticDimension;

}


//头高度

-(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 = [[UIViewalloc]initWithFrame:CGRectMake(0,0, SCREEN_WIDTH,60)];

    hv.backgroundColor = [UIColorwhiteColor];

    

    if (section==0) {

        self.pinLun_numL = [[UILabelalloc]init];

        [hv addSubview:self.pinLun_numL];

        self.pinLun_numL.font =MIDDLE_LIT_FONT;

        self.pinLun_numL.textColor =TEXT_HEX_MID_GRAY;

        [self.pinLun_numLmas_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 = [NSStringstringWithFormat:@"评论(%ld)",12];

        

        UIImageView *pl_imgv = [[UIImageViewalloc]init];

        pl_imgv.userInteractionEnabled =YES;

        [hv addSubview:pl_imgv];

        pl_imgv.image = [UIImageimageNamed:@"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 = [[UILabelalloc]init];

        [hv addSubview:self.pingLun_fenL];

        self.pingLun_fenL.font =MIDDLE_LIT_FONT;

        [self.pingLun_fenLmas_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 = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(clickedPingLunXiangQing:)];

        [hv addGestureRecognizer:tap];

    } else {

        

        UILabel *lab_xs = [[UILabelalloc]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 = [[UIImageViewalloc]init];

        xs_imgv.userInteractionEnabled =YES;

        [hv addSubview:xs_imgv];

        xs_imgv.image = [UIImageimageNamed:@"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 = [[UILabelalloc]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 = [[UIImageViewalloc]init];

        self.shanglaImgv.userInteractionEnabled =YES;

        [view addSubview:self.shanglaImgv];

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

        [self.shanglaImgvmas_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;

}


阅读全文
0 0
原创粉丝点击