在UITableViewCell内收缩放大UIImageView

在UITableViewCell内收缩放大UIImageView,uitableview,uiscrollview,zooming,pinchzoom,tableviewcell,Uitableview,Uiscrollview,Zooming,Pinchzoom,Tableviewcell,我正在创建一个tableview,其中我将在UITableViewCell中拥有一个UIImageView,我希望允许用户放大它。我已经能够在UIScrollView中创建此效果,但在放大到单个UITableViewCell时,我一直在努力使其正确 在底部,我包含了适用于UIScrollView的代码。挑战首先是如何返回视图以进行缩放CrollView。如果我尝试从单元格中为该方法提供UIImageView,它会抛出一个错误,因为在加载表之前调用了viewForZoomingInScrollVi

我正在创建一个tableview,其中我将在UITableViewCell中拥有一个UIImageView,我希望允许用户放大它。我已经能够在UIScrollView中创建此效果,但在放大到单个UITableViewCell时,我一直在努力使其正确

在底部,我包含了适用于UIScrollView的代码。挑战首先是如何返回视图以进行缩放CrollView。如果我尝试从单元格中为该方法提供UIImageView,它会抛出一个错误,因为在加载表之前调用了viewForZoomingInScrollView,因此它找不到我正在引用的单元格。如果我传递整个视图本身self.view,我可以滚动,但整个tableview会被缩放,我只想缩放单元格内的UIImageView,当我释放缩放时,由于未捕获的异常“CALayerInvalidGeometry”,导致终止应用程序时出错,原因是:“CALayer bounds包含NaN:[NaN NaN;375 667]这显然不是正确的道路

在此提供任何帮助或指导都将不胜感激

- (UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView {

return self.imageView;
}



- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
[self centerScrollViewContents];
}



- (void)centerScrollViewContents {

CGSize boundsSize = zoomTable.bounds.size;
CGRect contentsFrame = self.imageView.frame;


if (contentsFrame.size.width < boundsSize.width) {
    contentsFrame.origin.x = (boundsSize.width - contentsFrame.size.width) / 2.0f;
} else {
    contentsFrame.origin.x = 0.0f;
}

if (contentsFrame.size.height < boundsSize.height) {
    contentsFrame.origin.y = (boundsSize.height - contentsFrame.size.height) / 2.0f;
} else {
    contentsFrame.origin.y = 0.0f;
}

self.imageView.frame = contentsFrame;

}

我觉得你好像想要Facebook或Twitter所拥有的东西,你点击一张图片,它就会缩放以适应屏幕

您需要做的是将其视为导航步骤——即概念上类似于如果在标准表视图中选择行并将新的视图控制器推到导航控制器堆栈上所发生的事情,除非您可能想使用自定义转换方式进行模式化。

在简单的情况下,这意味着在细胞的图像视图中添加一个点击手势识别器;为了获得完整的效果,您需要添加一个捏手势识别器来进行交互式转换

我建议观看以下WWDC视频:

2013会话218使用视图控制器的自定义转换 2014年第214课时iOS 8中的视图控制器改进 2014年课程228展示控制器内部的外观
UITableView的构建并没有考虑到缩放。实现-viewForZoomingInScrollView:只会让你头疼。谢谢你的回复和指导。实际上,我现在正在从一个表视图切换到一个新的视图控制器,在转换过程中缩放图像。我试图把它推得更远,不需要额外的点击就可以进行缩放,但我看到的一切似乎都不支持该功能。