当前位置: 代码迷 >> 综合 >> IOS 之 UITableView 实现点击展开裂缝效果
  详细解决方案

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

热度:10   发布时间:2024-01-12 00:34:11.0

原理是在点击单元格的时候给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;}elseself.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;}elsereturn 56;
}






  相关解决方案