ios17~UICollectionViewCell中用UIScrollView缩放图片

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);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • UIView+SGFrame.h #import @interface UIView (SGFrame) @pro...
    超越时空的思念_8a22阅读 5,813评论 1 1
  • 在iOS中,滚动视图UIScrollView用于查看大于屏幕的内容。Scroll View有两个主要目的: 让用户...
    pro648阅读 38,708评论 4 37
  • 基础篇: 面向对象的特征:继承+多态,封装。 继承的特性: 子类拥有父类非private的属性,方法。 子类可以拥...
    太林阅读 1,092评论 0 0
  • 人生,就像石头记里的历劫一样,命中注定会经历数不尽的磨难。生命的状态是运动的。人每天不停的忙碌、劳作、体验着不...
    风竹禅玉阅读 4,147评论 0 2