IOS 之 UITableView 实现点击展开裂缝效果

原理是在点击单元格的时候给cell添加一个view蓝色的是新添加的视图


来看代码

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSInteger section = [indexPath section];
    NSInteger row = [indexPath row];
    NSString *key = [self.key objectAtIndex:section];
    NSArray *vales = [self.name objectForKey:key];
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:TableIdentifier];
    if ( tableView.tag == 1) {
        cell.textLabel.text = [vales objectAtIndex:row];
    }else{
        cell.textLabel.text = [filervale objectAtIndex:row];
    }

    UIView *mainView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tabview.bounds.size.width, 55)];
    mainView.layer.backgroundColor = [UIColor colorWithRed:233/255.0 green:0/255.0 blue:0/255.0 alpha:1].CGColor;
    mainView.layer.borderColor = [UIColor colorWithRed:255/255.0 green:255/255.0 blue:0/255.0 alpha:1].CGColor;
    mainView.layer.borderWidth = 0.5;
    mainView.layer.masksToBounds = YES;
    
    [cell addSubview:mainView];
    return cell;
}

这里添加一个手势,就是点击cell时触发

-(void)addGestureRecognizerForView:(UITableViewCell*)cell action:(SEL)action
{
    UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:action];
    [cell addGestureRecognizer:gesture];
}

- (void)tableViewTouchInView:(UITapGestureRecognizer *)gesture
{
    UITableViewCell *cell = (UITableViewCell*)gesture.view;
    NSIndexPath *indexpath = [self.tabview indexPathForCell:cell];
    if ( self.selectRow == indexpath.row ) {
        self.selectRow = -1;
    }else
        self.selectRow = indexpath.row;
    NSArray *array = [NSArray arrayWithObject:indexpath];
    [self.tabview reloadRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationAutomatic];
}
这里是即将显示时判断是否是选中的那行如果是添加视图并设置高度

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self addGestureRecognizerForView:cell action:@selector(tableViewTouchInView:)];
    if ( self.selectRow == indexPath.row ) {
        self.ExpandView.frame = CGRectMake(0, 55, self.tabview.bounds.size.width, 55);
        [cell addSubview:self.ExpandView];
    }
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ( self.selectRow == indexPath.row ) {
        return 110;
    }else
        return 56;
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值