ios17~UICollectionViewCell中用UISc

作者: 摹喵居士 | 来源:发表于2018-05-30 15:10 被阅读187次

2018.06.01

UICollectionViewCell中添加UIScrollView,使用UIImageView来缩放图片

  • 设置scrollView,maximumZoomScale,minimumZoomScale,delegate
self.scrollView.userInteractionEnabled = YES;
self.scrollView.scrollEnabled = YES;
self.scrollView.bounces = YES;
self.scrollView.maximumZoomScale = 3.0f;
self.scrollView.minimumZoomScale = 1.0f;
self.scrollView.delegate = self;
self.scrollView.clipsToBounds = YES;
  • cell在willDisplay的时候,要恢复缩放状态
[self.scrollView setZoomScale:self.scrollView.minimumZoomScale animated:NO];
  • 双击图片放大
- (void)onDoubleTappedGestureRecognizer:(UITapGestureRecognizer *)recognizer {
    

    if (self.scrollView.zoomScale > self.scrollView.minimumZoomScale) {
        // 已经放大 现在缩小
        [self.scrollView setZoomScale:self.scrollView.minimumZoomScale animated:YES];
    }
    else {
        [self.scrollView setZoomScale:self.scrollView.maximumZoomScale animated:YES];
    }

}
  • UIScrollViewDelegate,选中要缩放的UIImageView
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return self.imageView;
}
  • UISCrollViewDelegate,缩放时保持图片居中
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
    CGFloat scrollW = CGRectGetWidth(scrollView.frame);
    CGFloat scrollH = CGRectGetHeight(scrollView.frame);
    
    CGSize contentSize = scrollView.contentSize;
    CGFloat offsetX = scrollW > contentSize.width ? (scrollW - contentSize.width) * 0.5 : 0;
    CGFloat offsetY = scrollH > contentSize.height ? (scrollH - contentSize.height) * 0.5 : 0;
    
    CGFloat centerX = contentSize.width * 0.5 + offsetX;
    CGFloat centerY = contentSize.height * 0.5 + offsetY;
    
    self.imageView.center = CGPointMake(centerX, centerY);
}

相关文章

网友评论

    本文标题:ios17~UICollectionViewCell中用UISc

    本文链接:https://www.haomeiwen.com/subject/fcztsftx.html