Możecie spróbować manipulowanie UIGestureRecognizers, aby to zrobić. W GalleryViewController
:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath {
GalleryImageCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"galleryImageCell" forIndexPath:indexPath];
ImageContext *imageContext = [self.images objectAtIndex:indexPath.row];
cell.imageContext = imageContext;
[self.collectionView addGestureRecognizer:cell.scrollView.pinchGestureRecognizer];
[self.collectionView addGestureRecognizer:cell.scrollView.panGestureRecognizer];
return cell;
}
Od Apple's documentation on UIView:
Dołączanie rozpoznawania gestów do widoku określa zakres reprezentowanego gest, powodując jej odbierać poprawki hit przetestowanych do tego widoku i wszystkich jego subviews. Widok zachowuje narzędzie do rozpoznawania gestów.
Należy również upewnić się, że zostały usunięte, gdy komórka nie jest już wyświetlana.
- (void)collectionView:(UICollectionView *)collectionView
didEndDisplayingCell:(UICollectionViewCell *)cell
forItemAtIndexPath:(NSIndexPath *)indexPath {
// Get the cell instance and ...
[self.collectionView removeGestureRecognizer:cell.scrollView.pinchGestureRecognizer];
[self.collectionView removeGestureRecognizer:cell.scrollView.panGestureRecognizer];
}
Ponieważ nie jesteś modyfikowanie delegować UIGestureRecognizer, zaledwie jego zakresu, to nadal kontrolować powiększanie Scrollview tylko, że komórki.
EDIT:
panGestureRecognizer
I dodaje się do powyższych przykładów, zgodnie z sugestią, że PO jest potrzebne. Sam zoom jest całkowicie obsługiwany przez pinchGestureRecognizer
, ale prawdą jest, że w większości przypadków, po powiększeniu obrazu do punktu, w którym widoczny jest tylko jego podzestaw, należy przesunąć, aby przesunąć widoczną część dookoła. Oznacza to, że jest to część prawidłowego zoomowania.
Dziękujemy za oddanie zaktualizowany kod w repo. Przydało mi się to! – super9