图片浏览器(高仿微信)

自己根据微信朋友圈的图片浏览器特点,重新编写了一个高仿微信的图片浏览器源代码控件。

F964E8EB-10B8-4DE4-B405-A76A7D39CA61.png

1,结构:

TBPictureBrowserView,继承UIView,主控件
TBImageView,重写UIImageView,子控件

2,实现思路

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;
        // 设置占位符
        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,每一个TBImageView子控件添加UIPinchGestureRecognizer手势,用于拉伸

- (void)pinchGesture:(UIPinchGestureRecognizer *)gesture {
    
    CGFloat temp = self.tbScale + (gesture.scale - 1);
    [self setImageViewScale:temp];
    gesture.scale = 1.0;
}

4, 根据缩放比例展示图片

- (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)];
}

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

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,198评论 4 61
  • “大市场”
    as鸿哥阅读 148评论 0 0
  • 今天王煜写作业的态度比昨天好,就是同行昨天写的不好,今天告诉我让我重新去给他买一本,这本没发看,我让他做...
    王煜妈妈阅读 135评论 0 0
  • “铃……铃……铃……”,“嘀嘀叭叭”请大家让一下 在北京,我们经常都会听到这种熟悉的声音。 今天我开车的时候在一条...
    Ange方甜甜阅读 344评论 1 2
  • 1. 今晚跟程先森在KTV闹了些不愉快。 朋友组局唱K,他跟着我去。玩到最后大家都挺嗨的,有三个朋友在一起打打闹闹...
    木子的老梁阅读 425评论 0 0