圖片瀏覽器(高仿微信)

自己根據(jù)微信朋友圈的圖片瀏覽器特點(diǎn),重新編寫了一個(gè)高仿微信的圖片瀏覽器源代碼控件。

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

1,結(jié)構(gòu):

TBPictureBrowserView,繼承UIView,主控件
TBImageView,重寫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)];
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,250評(píng)論 4 61
  • “大市場(chǎng)”
    as鴻哥閱讀 172評(píng)論 0 0
  • 今天王煜寫作業(yè)的態(tài)度比昨天好,就是同行昨天寫的不好,今天告訴我讓我重新去給他買一本,這本沒發(fā)看,我讓他做...
    王煜媽媽閱讀 174評(píng)論 0 0
  • “鈴……鈴……鈴……”,“嘀嘀叭叭”請(qǐng)大家讓一下 在北京,我們經(jīng)常都會(huì)聽到這種熟悉的聲音。 今天我開車的時(shí)候在一條...
    Ange方甜甜閱讀 386評(píng)論 1 2
  • 1. 今晚跟程先森在KTV鬧了些不愉快。 朋友組局唱K,他跟著我去。玩到最后大家都挺嗨的,有三個(gè)朋友在一起打打鬧鬧...
    木子的老梁閱讀 452評(píng)論 0 0

友情鏈接更多精彩內(nèi)容