我只想放大/缩小表格视图的任何一个特定行/单元格,而不是整个表格。我使用了捏合手势,但它不适用于表格单元格,它适用于整个表格。
我需要一次缩放一个单元格,当我想缩放第二个单元格时,第一个单元格会自动调整大小?
请帮帮我。
提前致谢。
我只想放大/缩小表格视图的任何一个特定行/单元格,而不是整个表格。我使用了捏合手势,但它不适用于表格单元格,它适用于整个表格。
我需要一次缩放一个单元格,当我想缩放第二个单元格时,第一个单元格会自动调整大小?
请帮帮我。
提前致谢。
您可以尝试以下代码:
// For Zoom in
CGAffineTransform trans = CGAffineTransformScale(cell.contentView.transform, 100, 100);
view.transform = trans;
// For Zoom Out
CGAffineTransform trans = CGAffineTransformScale(cell.contentView.transform, 0.01, 0.01);
view.transform = trans;
您可以使用此didSelectRowAtIndexPath
方法。
在didSelectRowAtIndexPath:
下面的代码中写入以获取选定的cell
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
现在你得到了cell
你可以这样做:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
[self itemSelected:indexPath];
}
- (void)itemSelected:(NSIndexPath *)indexPath {
[UIView animateWithDuration:0.3 animations:^{
[self animate:indexPath highlighted:YES];
} completion:^(BOOL finished) {
[self animate:indexPath highlighted:NO];
}];
}
- (void)animate:(NSIndexPath *)indexPath highlighted:(BOOL)highlighted {
SoundEffectsCell *cell = (SoundEffectsCell *)[_collectionView cellForItemAtIndexPath:indexPath];
float scale = highlighted ? 0.9 : 1.0;
[UIView transitionWithView:_collectionView duration:0.1 options:UIViewAnimationOptionTransitionNone animations:^{
cell.transform = CGAffineTransformMakeScale(scale, scale);
} completion:nil];
}
请将 CollectionViewCell 替换为您的。我已经用 UICollectionView 实现了它,但它也与 UITableView 相同。
取一个变量
NSInteger selectedindex
现在把这个东西放进去
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { //whatever your code write here if (selectedindex == indexPath.row) { [self animateZoomforCell:cell]; }else { [self animateZoomforCellremove:cell]; } return cell; } - (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { //whatever your code write here selectedindex =indexPath.row; [self.tableView reloadData]; }
您可以使用此方法放大/缩小单元格
-(void)animateZoomforCell:(UITableViewCell*)zoomCell { [UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ zoomCell.transform = CGAffineTransformMakeScale(1.6,1.6); } completion:^(BOOL finished){ }]; } -(void)animateZoomforCellremove:(UITableViewCell*)zoomCell { [UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ zoomCell.transform = CGAffineTransformMakeScale(1.0,1.0); } completion:^(BOOL finished){ }]; }
斯威夫特 5
免责声明:它将缩放整个 tableView 内容。对于缩小重复相同的变换比例值为 1。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath) as! YourCellName
let zoomView = cell.contentView.transform.scaledBy(x: 2, y: 2)
view.transform = zoomView
}
}
你试过在里面写@Devang回答的代码吗
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
希望这可以帮助。