ios - 放大二维 UICollectionView

标签 ios uiscrollview uicollectionview uicollectionviewlayout uipinchgesturerecognizer

我创建了一个 UICollectionView这是水平和垂直的。它有不同的UICollectionViewCells .一切都布局正确。现在我正在努力做到zoomable . UICollectionViewCells也正确调整大小。每次UIPinchGesture发生,我设置了itemSize里面UICollectionViewLayout依赖 scale .

TestLayout *layout =  (TestLayout *) self.collectionViewLayout;
CGSize newItemSize = CGSizeMake(_sizeItem.width * gesture.scale, 
                                _sizeItem.height * gesture.scale);
[layout setItemSize:newItemSize];

这里可以看到方法设置项目大小 我在我的 CustomLayout 中打电话。
- (void)setItemSize:(CGSize)itemSize
{
    if (CGSizeEqualToSize(self.itemSize, itemSize)) return;

    _itemSize = itemSize;

//    [self prepareLayout];
    [self invalidateLayout];
}

我的问题是知道,所有项目resize到右下角,我不知道如何准确地关注元素我的 UIPinchGesture上。

我试图改变 contentOffset每次gesture像这样发生:
CGPoint posInView = [gesture locationInView:self];
CGPoint pointPinchTouch = CGPointMake(posInView.x - self.contentOffset.x,
                                      posInView.y - self.contentOffset.y);
CGPoint newOffset = CGPointMake(self.contentOffset.x * (gesture.scale * 2),
                                self.contentOffset.y * (gesture.scale * 2));
[self setContentOffset:newOffset animated:NO];

但我从未设法留在 CGPoint我的 UIPinchGesture被处决。

此外,当 scrolling总的来说UICollectionView , 我的 contentOffset仍然是 {0,0}scroll没有结束。所以开始捏我总是在左上角结束。
因为UICollectionView似乎没有设计为同时使用水平和垂直,这就是为什么我也不能使用 delegate UIScrollView的方法对于 zooming .
也许有人可以告诉我如何解决这个问题。

最佳答案

让我看看我是否理解这个问题。您正试图通过更改项目大小来放大特定单元格,但所有单元格的大小都在改变,而不是被挤压的那个?

如果我的理解是正确的,那么我可以提供帮助。更改 FlowLayout.itemSize 会更改 Collection View 中所有单元格的大小。如果要设置特定单元格的项目大小,则应覆盖 UICollectionViewDelegateFlowLayout 的 sizeForItemAtIndexPath。在 sizeForItemAtIndexPath 方法中,您可以检查 itemAtIndexPath 与被挤压的单元格并仅为该单元格返回不同的大小。

您问题的另一部分(关于滚动和偏移)对我来说并不是很清楚。你是对的, Collection View 应该水平或垂直使用,但不能同时使用。也许这就是导致问题的原因?

关于ios - 放大二维 UICollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22358563/

相关文章:

ios - 链接 Storyboard与 Non-Storyboard 项目

ios - 在 UICollectionView 中的单元格上创建 View

iphone - 从窗口中移除时 UIScrollview contentOffset 发生变化

ios - UIButton 不响应嵌套在另一个 UIScrollView 中的 UIScrollView 中的触摸

ios - 如何检查 ScrollView 是否在底部滚动或不在 ios 中

swift - 如何使用 UIViewControllerRepresentable 在 SwiftUI 中呈现 UICollectionView

uicollectionview - 禁用 UICollectionView 的焦点触发滚动

ios - 更新到 Xcode 11.0 后无法构建 React Native 项目

ios - UITableViewCell 与 UIButton 结合以及可视化问题

ios 模拟器代理设置不起作用