ios - Zoom en un UICollectionView bidimensional
uiscrollview uicollectionviewlayout (1)
Déjame ver si entiendo el problema. ¿Está intentando ampliar una celda específica cambiando el tamaño del elemento, pero el tamaño de TODAS las celdas está cambiando en lugar del tamaño pellizcado?
Si mi comprensión es correcta, entonces puedo ayudar. Cambiar FlowLayout.itemSize cambia el tamaño de todas las celdas en la vista de colección. Si desea establecer el tamaño del elemento de celdas específicas, debe reemplazar UICollectionViewDelegateFlowLayout''s sizeForItemAtIndexPath. En el método sizeForItemAtIndexPath, puede verificar el elementoAtIndexPath en la celda pellizcada y devolver un tamaño diferente solo para esa celda.
La otra parte de su pregunta (sobre desplazamiento y desplazamiento) no es muy clara para mí. Tiene razón en que se supone que las vistas de colección deben usarse horizontal o verticalmente, pero no ambas. Quizás eso es lo que causa el problema?
UICollectionView
que es horizontal y vertical. Tiene diferentes UICollectionViewCells
. Todo está trazado correctamente. Ahora estoy tratando de hacerlo zoomable
. Las UICollectionViewCells
se redimensionan correctamente. Cada vez que se UIPinchGesture
el UIPinchGesture
, configuro el itemSize
dentro del UICollectionViewLayout
en la scale
.
TestLayout *layout = (TestLayout *) self.collectionViewLayout;
CGSize newItemSize = CGSizeMake(_sizeItem.width * gesture.scale,
_sizeItem.height * gesture.scale);
[layout setItemSize:newItemSize];
Aquí puede ver el método setItemSize al que estoy llamando dentro de mi CustomLayout.
- (void)setItemSize:(CGSize)itemSize
{
if (CGSizeEqualToSize(self.itemSize, itemSize)) return;
_itemSize = itemSize;
// [self prepareLayout];
[self invalidateLayout];
}
Mi problema es saber, todos los elementos resize
de resize
a la parte inferior derecha y no sé cómo enfocarme exactamente en el elemento en el que estaba mi UIPinchGesture
.
Traté de cambiar el contentOffset
cada vez que el gesture
esta manera:
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];
Pero nunca logré permanecer en el CGPoint
mi UIPinchGesture
fue ejecutado.
Además, al scrolling
por todo UICollectionView
, mi contentOffset
sigue siendo {0,0}
cuando el scroll
no termina. Así que empieza a pellizcar. Siempre termino en la esquina superior izquierda. Debido a que el UICollectionView
parece no estar diseñado para ser utilizado horizontal y verticalmente al mismo tiempo, es por eso que tampoco puedo usar los métodos de delegate
de UIScrollView
para zooming
. Tal vez alguien me puede decir cómo resolver este problema.