Vergrößern Sie eine zweidimensionale UICollectionView
Ich habe eineUICollectionView
das ist horizontal und vertikal. Es hat andersUICollectionViewCells
. Alles ist richtig angeordnet. Jetzt versuche ich es zu schaffenzoomable
. DasUICollectionViewCells
werden auch richtig skaliert. Jedes Mal, wenn dieUIPinchGesture
vorkommt, setze ich dieitemSize
in derUICollectionViewLayout
abhängig von derscale
.
TestLayout *layout = (TestLayout *) self.collectionViewLayout;
CGSize newItemSize = CGSizeMake(_sizeItem.width * gesture.scale,
_sizeItem.height * gesture.scale);
[layout setItemSize:newItemSize];
Hier sehen Sie die MethodesetItemSize Ich rufe in meinem CustomLayout an.
- (void)setItemSize:(CGSize)itemSize
{
if (CGSizeEqualToSize(self.itemSize, itemSize)) return;
_itemSize = itemSize;
// [self prepareLayout];
[self invalidateLayout];
}
Mein Problem ist, alle Artikel zu kennenresize
rechts unten und ich weiß nicht, wie ich mich genau auf das Element konzentrieren sollUIPinchGesture
war auf.
Ich habe versucht, das zu änderncontentOffset
jedes mal diegesture
kommt wie folgt vor:
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];
Aber ich habe es nie geschafft, auf dem Platz zu bleibenCGPoint
meineUIPinchGesture
wurde ausgeführt.
Außerdem wennscrolling
im Großen und GanzenUICollectionView
, meincontentOffset
ist immer noch{0,0}
wenn diescroll
endete nicht. Also fang an zu kneifen, ich lande immer in der oberen linken Ecke. Weil dasUICollectionView
scheint nicht dafür ausgelegt zu sein, horizontal und vertikal gleichzeitig verwendet zu werden, deshalb kann ich das auch nicht verwendendelegate
Methoden vonUIScrollView
zumzooming
. Vielleicht kann mir jemand sagen, wie ich dieses Problem lösen kann.