簡體   English   中英

通過捏手勢縮放UICollectionView

[英]Zoom UICollectionView via pinch gesture

我有一個UICollectionView ,里面有很多單元格(大約5k +)。 我想捏放大/縮小。 我已經嘗試在每個捏合上invalidateLayout 真的很慢 所以我想使用CGAffineTransformMakeScale但是在此之后我不知道如何滾動。 我的代碼是:

- (void)didReceivePinchGesture:(UIPinchGestureRecognizer *)gesture {
static CGFloat scaleStart;

if (gesture.state == UIGestureRecognizerStateBegan) {
    scaleStart = self.venueLayoutZoom;
}
else if (gesture.state == UIGestureRecognizerStateChanged) {
    CGAffineTransform transform = CGAffineTransformMakeScale(self.venueLayoutZoom, self.venueLayoutZoom);
    self.activeCollectionNode.view.transform = transform;
    self.activeCollectionNode.view.contentSize = CGSizeMake(318 * self.venueLayoutZoom, 500 * self.venueLayoutZoom);
}
}

但是當放大時,我無法左右滾動。 幫幫我。

采用

@interface ViewController () <UICollectionViewDataSource, 
UICollectionViewDelegate, UICollectionViewDelegateFlowLayout>

@property (nonatomic,assign) CGFloat scale;
@property (nonatomic,weak)   IBOutlet UICollectionView *collectionView;

@end

@implementation ViewController
- (void)viewDidLoad
 {
[super viewDidLoad];

self.scale = 1.0;

[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cell"];

UIPinchGestureRecognizer *gesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(didReceivePinchGesture:)];
[self.collectionView addGestureRecognizer:gesture];

 }

 - (CGSize)collectionView:(UICollectionView *)collectionView layout:
 (UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:
 (NSIndexPath *)indexPath
  {
  return CGSizeMake(50*self.scale, 50*self.scale);
  }

  - (void)didReceivePinchGesture:(UIPinchGestureRecognizer*)gesture
  {
   static CGFloat scaleStart;

   if (gesture.state == UIGestureRecognizerStateBegan)
  {
    scaleStart = self.scale;
   }
   else if (gesture.state == UIGestureRecognizerStateChanged)
  {
    self.scale = scaleStart * gesture.scale;
    [self.collectionView.collectionViewLayout invalidateLayout];
  }
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM