当您选择一个tableviewcell时,它会从44像素扩展到100像素,当您取消选择时,它将再次缩小为44像素。
在故事板中,我将我的单元格定制为标准的100像素,并添加了3个标签。一个在顶部,两个在底部(底部的2个标签不应该可见并隐藏在底部)。
当我运行我的应用程序时,每个单元格将获得44像素的高度。底部的两个标签在正确的x坐标处可见,但在每个其他单元格之上。 像这样:
在viewDidLoad中:
self.expandedIndexPath = [NSIndexPath indexPathForRow:7 inSection:1];
方法:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Compares the index path for the current cell to the index path stored in the expanded
// index path variable. If the two match, return a height of 100 points, otherwise return
// a height of 44 points.
if ([indexPath compare:self.expandedIndexPath] == NSOrderedSame) {
return 100.0; // Expanded height
}
return 44.0; // Normal height
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
UILabel *DateName = (UILabel *)[cell viewWithTag:100100];
DateName.text = _objects[indexPath.row];
cell.accessoryType = UITableViewCellAccessoryNone;
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView beginUpdates];
if ([indexPath compare:self.expandedIndexPath] == NSOrderedSame) {
self.expandedIndexPath = nil;
} else {
self.expandedIndexPath = indexPath;
}
[tableView endUpdates];
}
如何在单元格扩展到100像素之前隐藏标签?
答案 0 :(得分:1)
将单元格设置为clipToBounds = YES;