我創建了一個水平和垂直的UICollectionView
。它有不同的UICollectionViewCells
。一切都是正確的。現在我正在努力使它zoomable
。 UICollectionViewCells
也正確調整大小。每當發生UIPinchGesture
時,我都將itemSize
設置在scale
的依賴項UICollectionViewLayout
之內。放大二維UICollectionView
TestLayout *layout = (TestLayout *) self.collectionViewLayout;
CGSize newItemSize = CGSizeMake(_sizeItem.width * gesture.scale,
_sizeItem.height * gesture.scale);
[layout setItemSize:newItemSize];
在這裏,您可以看到方法setItemSize我打電話我CustomLayout內。
- (void)setItemSize:(CGSize)itemSize
{
if (CGSizeEqualToSize(self.itemSize, itemSize)) return;
_itemSize = itemSize;
// [self prepareLayout];
[self invalidateLayout];
}
我的問題是知道的,所有項目resize
到右側底部,我不知道如何準確焦點的元素我UIPinchGesture
爲上。
我想盡了gesture
occures這樣的時間來改變contentOffset
:
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
似乎不被設計爲同時使用水平和垂直,這就是爲什麼我也不能使用UIScrollView
的delegate
方法zooming
。 也許有人可以告訴我如何解決這個問題。