3

我只想放大/缩小表格视图的任何一个特定行/单元格,而不是整个表格。我使用了捏合手势,但它不适用于表格单元格,它适用于整个表格。

我需要一次缩放一个单元格,当我想缩放第二个单元格时,第一个单元格会自动调整大小?

请帮帮我。

提前致谢。

4

5 回答 5

3

您可以尝试以下代码:

    // 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

于 2012-03-22T12:16:49.560 回答
1

你可以这样做:

- (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 相同。

于 2017-09-24T13:58:54.003 回答
0

取一个变量

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){
      }]; 
      }
于 2016-07-30T07:05:26.137 回答
0

斯威夫特 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
        }

    }
于 2020-11-18T07:43:28.107 回答
-1

你试过在里面写@Devang回答的代码吗

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

希望这可以帮助。

于 2012-03-22T12:26:03.547 回答