Увеличьте двумерный UICollectionView
Я создал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];
Здесь вы можете увидеть методsetItemSize Я звоню внутри моего 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
, Может кто-нибудь подскажет, как решить эту проблему.