自己根據(jù)微信朋友圈的圖片瀏覽器特點(diǎn)欲险,重新編寫(xiě)了一個(gè)高仿微信的圖片瀏覽器源代碼控件吃度。
F964E8EB-10B8-4DE4-B405-A76A7D39CA61.png
1,結(jié)構(gòu):
TBPictureBrowserView责语,繼承UIView氓英,主控件
TBImageView,重寫(xiě)UIImageView鹦筹,子控件
2,實(shí)現(xiàn)思路
1址貌,TBPictureBrowserView中添加UISrollView铐拐,并將圖片添加至UISrollView
for (NSInteger i = 0; i < self.totalPage; i++) {
TBImageView *imageView = [[TBImageView alloc] init];
imageView.frame = CGRectMake(i * self.width, 0, self.width, self.height);
[self.contentSC addSubview:imageView];
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.delegate = self;
// 設(shè)置占位符
if ([self.delegate respondsToSelector:@selector(placeHolderImage:index:)]) {
imageView.image = [self.delegate placeHolderImage:self index:i];
}
}
2,代理提供2中方法练对,分別用于小圖遍蟋,高清圖
@protocol TBPictureBrowserViewDelegate <NSObject>
@required
/**
* 小圖,站位圖
*/
- (UIImage *)placeHolderImage:(TBPictureBrowserView *)browser index:(NSInteger)index;
@optional
/**
* 高清圖的url
*/
- (NSString *)hightQualityImageUrl:(TBPictureBrowserView *)browser index:(NSInteger)index;
@end
3螟凭,每一個(gè)TBImageView子控件添加UIPinchGestureRecognizer手勢(shì)虚青,用于拉伸
- (void)pinchGesture:(UIPinchGestureRecognizer *)gesture {
CGFloat temp = self.tbScale + (gesture.scale - 1);
[self setImageViewScale:temp];
gesture.scale = 1.0;
}
4, 根據(jù)縮放比例展示圖片
- (void)setImageViewScale:(CGFloat)scale{
self.tbScale = scale;
[self setupScrollView];
self.scrollView.contentSize = CGSizeMake(self.scrollView.bounds.size.width * scale, self.scrollView.bounds.size.height * scale);
UIImageView *tempImageView = self.scrollView.subviews.firstObject;
tempImageView.size = self.scrollView.contentSize;
tempImageView.center = CGPointMake(self.scrollView.contentSize.width * 0.5, self.scrollView.contentSize.height * 0.5);
CGFloat Y = 0.5 * (self.scrollView.contentSize.height - self.scrollView.height);
CGFloat X = 0.5 * (self.scrollView.contentSize.width - self.scrollView.width);
[self.scrollView setContentOffset:CGPointMake(X, Y)];
}