When you select Cell, UITableViewCell resizes the cell

I want to resize the selected cell. But they change the position of the sensory cell.

- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *currentCell = [aTableView cellForRowAtIndexPath:indexPath]; CGContextRef context = UIGraphicsGetCurrentContext(); [UIView beginAnimations:nil context:context]; [UIView setAnimationDuration:0.5]; [UIView setAnimationDelegate:currentCell]; [UIView setAnimationDidStopSelector:@selector(endAnimation)]; float extendedSize = currentCell.frame.size.height; currentCell.frame = CGRectMake(currentCell.frame.origin.x, currentCell.frame.origin.y, currentCell.frame.size.width, currentCell.frame.size.height + extendedSize); UITableViewCell *afterCell; for (int i=indexPath.row+1; i<=[aTableView numberOfRowsInSection:indexPath.section]; i++) { afterCell = [aTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:indexPath.section]]; afterCell.frame = CGRectMake(afterCell.frame.origin.x, (afterCell.frame.origin.y + extendedSize), afterCell.frame.size.width, afterCell.frame.size.height); } [UIView commitAnimations]; 

}

Thanks.

+6
objective-c iphone
source share
1 answer

A simple example, but you get the idea:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView beginUpdates]; [tableView endUpdates]; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { if([indexPath isEqual:[tableView indexPathForSelectedRow]]) { return 88.0; } return 44.0; } 
+17
source share

All Articles