【发布时间】:2015-02-25 17:53:56
【问题描述】:
我正在创建一个表格视图,我将在 UITableViewCell 内有一个UIImageView,我希望允许用户放大。我已经能够在UIScrollView 中创建这种效果,但是很难让它正确放大到单个UITableViewCell。
在底部我包含了适用于UIScrollView 的代码。挑战从返回 viewForZoomingInScrollView 的内容开始。如果我尝试从单元格中给这个方法UIImageView 它会抛出一个错误,因为它似乎在加载表之前调用了viewForZoomingInScrollView,因此它找不到我正在引用的单元格。如果我通过整个视图本身self.view 我可以滚动但整个表格视图被缩放(我想缩放单元格内的UIImageView)并且当我释放缩放时我得到一个错误Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer bounds contains 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;
}
【问题讨论】:
-
UITableView在构建时并未考虑到缩放。实现-viewForZoomingInScrollView:只会让你头疼。
标签: uitableview uiscrollview zooming pinchzoom tableviewcell