0

私はUICollectionViewの中にたくさんの細胞(約5k +)を持っています。私はピンチをズームイン/アウトしたいです。私はすべてのピンチでinvalidateLayoutにしようとしました。それは本当に遅いです。だから私はCGAffineTransformMakeScaleを使用したいが、私はこれの後にスクロールする方法を知らない。 私のコードは次のとおりです。ピンチジェスチャーによるズームUICollectionView

- (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); 
} 
} 

しかし、私は左と右にスクロールすることはできませんズームインされています。私を助けてください。お返事のための

+0

@ReinierMelianおかげで、私はこれを試してみました。 –

+0

あなたのcollectionViewをUIScrollViewの中に入れ、スクロールできないようにすることはできますか? –

+0

@ReinierMelianどういう意味ですか? –

答えて

0

使用

@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]; 
    } 
    } 
+0

私の質問を読むことができますか?私はそれについて語った –

関連する問題