功能描述:支持網(wǎng)絡(luò)和本地gif、jpeg等格式圖片的瀏覽、捏合或雙擊放大縮小、長按保存到本地相冊、獲取gif圖片的循環(huán)次數(shù)和時長。

效果預(yù)覽.gif
主要部分:創(chuàng)建一個繼承于UIScrollView的子類視圖WSLPhotoZoom,這個視圖需要一個展示圖片的UIImageView,然后再結(jié)合UIScrollView自帶的縮放手勢的代理方法來達(dá)到縮放效果;最后只需要把這個能縮放的視圖放到需要展示圖片的視圖上就行了。當(dāng)然,也可以結(jié)合UIPinchGestureRecognizer(捏合手勢)和UIPanGestureRecognizer(拖拽手勢)來實現(xiàn)這樣的效果。
#pragma mark -- UIScrollViewDelegate
//返回需要縮放的視圖控件 縮放過程中
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return self.imageView;
}
//開始縮放
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{
NSLog(@"開始縮放");
}
//結(jié)束縮放
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{
NSLog(@"結(jié)束縮放");
}
//縮放中
- (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 ,有需要的可以去看看
與此功能相關(guān)的文章可以查看我之前的文章:
iOS 獲取gif圖片循環(huán)次數(shù)和時長
UIScrollerView當(dāng)前顯示3張圖