如何缩放tableview中的单元格

时间:2011-07-13 06:40:01

标签: iphone ipad uitableview uiscrollview uigesturerecognizer

我正在开发一个应用程序,其中我采用了tableview来显示单元格中的图像。我已经给出了一个单元格的大小作为ipad屏幕的大小,并且在我滚动tableview时要小心,它滚动到下一个单元格。现在我想要缩放每个单元格,因为我有一个要求。为了实现它,我采用了一个scrollview并将其放在单元格的内容视图上,并将图像放在滚动视图上。

问题: 我面临的问题是没有在单元格上执行缩放。甚至没有调用手势委托方法。我对此感到惊讶,并开始在网络上搜索“我们是否可以在桌面视图中缩放单元格”。但是找不到很多结果。

有人可以建议我是否有办法缩放桌面视图中的单元格?我们不能将滚动视图放在tableview单元格中吗?

任何方法都表示赞赏。

TNQ

3 个答案:

答案 0 :(得分:3)

我也面临这个问题。我按照以下方式解决了这个问题: 我已将Pinch手势识别器添加到tableView的单元格中,并应用以下代码:

- (void)scalePiece:(UIPinchGestureRecognizer *)gestureRecognizer {

  if ([gestureRecognizer state] == UIGestureRecognizerStateBegan ||   [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
      [gestureRecognizer view].transform = CGAffineTransformScale([[gestureRecognizer view] transform], [gestureRecognizer scale], [gestureRecognizer scale]);
      [gestureRecognizer setScale:1];
  }
  else if ([gestureRecognizer state] == UIGestureRecognizerStateEnded)
  {
    if([gestureRecognizer view].transform.b<0 && [gestureRecognizer view].transform.c<1)
    {
        [gestureRecognizer view].transform=CGAffineTransformMake(0,-1.0,1.0,0,0,0);
    }
    [gestureRecognizer view].transform = CGAffineTransformScale([[gestureRecognizer view] transform], [gestureRecognizer scale], [gestureRecognizer scale]);
    [gestureRecognizer setScale:1];

  }
}

答案 1 :(得分:1)

我等了几天后终于回答了我自己的问题。正如我在问题中所说,我想缩放表视图单元格中的内容,我认为这是不可能的。

我尝试在桌面视图的单元格中放置一个scrollview,并尝试缩放但是手势识别器无法识别手势,因为它在表格视图滚动和我的滚动视图之间混淆了。花了时间谷歌搜索和我自己的表视图和滚动经验后,我得出一个结论,我不能缩放表视图单元格的内容。

我通过将一个捏合手势分配给tableview的超级视图解决了我的情况(滚动视图是我的超级视图)。一旦识别到夹点,我就将表格视图单元格的内容视图的内容复制到视图中并将其添加到超级视图,即滚动视图,从而缩放视图。稍后执行缩放并缩放比例缩小为1后,我将从超级视图中删除视图。

通过这种方式,我解决了我的问题。

希望它会像我一样帮助其他人

TNQ

答案 2 :(得分: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){
      }]; 
      }