我创建了一个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 中调用的方法setItemSize 。
- (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
似乎不是设计为同时使用水平和垂直,这就是为什么我也不能使用for的delegate
方法。也许有人可以告诉我如何解决这个问题。UIScrollView
zooming