iOS 图片浏览的放大缩小

本文介绍如何利用UIScrollView实现iOS中图片的浏览、捏合放大缩小、双击放大、长按保存到相册及获取gif信息。创建继承自UIScrollView的WSLPhotoZoom视图,结合UIImageView和手势代理实现缩放功能。代码已上传至Github,同时提及了获取gif循环次数和时长的相关文章。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能描述:支持网络和本地gif、jpeg等格式图片的浏览、捏合或双击放大缩小、长按保存到本地相册、获取gif图片的循环次数和时长。

效果预览.gif

主要部分:创建一个继承于UIScrollView的子类视图WSLPhotoZoom,这个视图需要一个展示图片的UIImageView,然后再结合UIScrollView自带的缩放手势的代理方法来达到缩放效果;最后只需要把这个能缩放的视图放到需要展示图片的视图上就行了。当然,也可以结合UIPinchGestureRecognizer(捏合手势)和UIPanGestureRecognizer(拖拽手势)来实现这样的效果。

#pragma mark -- UIScrollViewDelegate
//返回需要缩放的视图控件 缩放过程中
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return self.imageView;
}

//开始缩放
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{
    NSLog(@"开始缩放");
}
//结束缩放
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{
    NSLog(@"结束缩放");
}

//缩放中
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
    // 延中心点缩放
    CGFloat imageScaleWidth = scrollView.zoomScale * self.imageNormalWidth;
    CGFloat imageScaleHeight = scrollView.zoomScale * self.imageNormalHeight;

    CGFloat imageX = 0;
    CGFloat imageY = 0;
     imageX = floorf((self.frame.size.width - imageScaleWidth) / 2.0);
     imageY = floorf((self.frame.size.height - imageScaleHeight) / 2.0);
     self.imageView.frame = CGRectMake(imageX, imageY, imageScaleWidth, imageScaleHeight);

}

详情不再啰嗦,我相信很多人都懂,直接上 Github ,有需要的可以去看看

与此功能相关的文章可以查看我之前的文章:
iOS 获取gif图片循环次数和时长
UIScrollerView当前显示3张图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值