YBImageBrowser 用法

好庫YBImageBrowser

1.原始方法

  • 數(shù)據(jù)源
YBImageBrowseCellData
YBVideoBrowseCellData

YBImageBrowseCellData:
url:網(wǎng)絡(luò)url
sourceObject:圖片的對象 如果是nil 則沒有還原動畫和隱藏當前圖片功能 是直上直下動畫 也還行 ??
//本地建議用這個 Local image (配置本地圖片推薦使用 YBImage)
data.imageBlock = ^__kindof UIImage * _Nullable{
                return [YBImage imageNamed:imageStr];
            };
phAsset:asset對象 

YBVideoBrowseCellData:
url:網(wǎng)絡(luò)url 和本地 本地把path轉(zhuǎn)換成url 

NSString *path = [[NSBundle mainBundle] pathForResource:@"" ofType:@""];
NSURL *url = [NSURL fileURLWithPath:path];
sourceObject:圖片的對象 如果是nil 則沒有還原動畫和隱藏當前圖片功能 是直上直下動畫 也還行 ??
phAsset:asset對象
  • 瀏覽器對象創(chuàng)建
browserDataArr 就是裝載著YBImageBrowseCellData、YBVideoBrowseCellData的數(shù)組

YBImageBrowser *browser = [YBImageBrowser new];
 browser.dataSourceArray = browserDataArr;
 browser.currentIndex = index;
 [browser show];

2.代理方法

YBImageBrowser *browser = [YBImageBrowser new];
browser.dataSource = self;
browser.currentIndex = index;
[browser show];
 代理
YBImageBrowserDataSource, YBImageBrowserDelegate

- (NSUInteger)yb_numberOfCellForImageBrowserView:(YBImageBrowserView *)imageBrowserView {
    return self.dataArray.count;
}
- (id<YBImageBrowserCellDataProtocol>)yb_imageBrowserView:(YBImageBrowserView *)imageBrowserView dataForCellAtIndex:(NSUInteger)index {
    PHAsset *asset = (PHAsset *)self.dataArray[index];
    if (asset.mediaType == PHAssetMediaTypeVideo) {
        
        // Type 1 : 系統(tǒng)相冊的視頻 / Video of system album
        YBVideoBrowseCellData *data = [YBVideoBrowseCellData new];
        data.phAsset = asset;
        data.sourceObject = [self sourceObjAtIdx:index];

        return data;
    } else if (asset.mediaType == PHAssetMediaTypeImage) {
        
        // Type 2 : 系統(tǒng)相冊的圖片 / Image of system album
        YBImageBrowseCellData *data = [YBImageBrowseCellData new];
        data.phAsset = asset;
        data.sourceObject = [self sourceObjAtIdx:index];

        return data;
    }
    return nil;
}

3.普通例子

- (id)sourceObjAtIdx:(NSInteger)idx {
    MainImageCell *cell = (MainImageCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForRow:idx inSection:0]];
    return cell ? cell.mainImageView : nil;
}
- (void)showBrowserForMixedCaseWithIndex:(NSInteger)index {
    
    NSMutableArray *browserDataArr = [NSMutableArray array];
    [self.dataArray enumerateObjectsUsingBlock:^(NSString *_Nonnull imageStr, NSUInteger idx, BOOL * _Nonnull stop) {

        // 此處只是為了判斷測試用例的數(shù)據(jù)源是否為視頻,并不是僅支持 MP4。/ This is just to determine whether the data source of the test case is video, not just MP4.
        if ([imageStr hasSuffix:@".MP4"]) {
            if ([imageStr hasPrefix:@"http"]) {
                
                // Type 1 : 網(wǎng)絡(luò)視頻 / Network video
                YBVideoBrowseCellData *data = [YBVideoBrowseCellData new];
                data.url = [NSURL URLWithString:imageStr];
                data.sourceObject = [self sourceObjAtIdx:idx];
                [browserDataArr addObject:data];
                
            } else {
                
                // Type 2 : 本地視頻 / Local video
                NSString *path = [[NSBundle mainBundle] pathForResource:imageStr.stringByDeletingPathExtension ofType:imageStr.pathExtension];
                NSURL *url = [NSURL fileURLWithPath:path];
                YBVideoBrowseCellData *data = [YBVideoBrowseCellData new];
                data.url = url;
                data.sourceObject = [self sourceObjAtIdx:idx];
                [browserDataArr addObject:data];
                
            }
        } else if ([imageStr hasPrefix:@"http"]) {
            
            // Type 3 : 網(wǎng)絡(luò)圖片 / Network image
            YBImageBrowseCellData *data = [YBImageBrowseCellData new];
            data.url = [NSURL URLWithString:imageStr];
            data.sourceObject = [self sourceObjAtIdx:idx];
            [browserDataArr addObject:data];
            
        } else {
            
            // Type 4 : 本地圖片 / Local image (配置本地圖片推薦使用 YBImage)
            YBImageBrowseCellData *data = [YBImageBrowseCellData new];
            data.imageBlock = ^__kindof UIImage * _Nullable{
                return [YBImage imageNamed:imageStr];
            };
            data.sourceObject = [self sourceObjAtIdx:idx];
            [browserDataArr addObject:data];
            
        }
    }];
    
    //Type 5 : 自定義 / Custom
    CustomCellData *data = [CustomCellData new];
    data.text = @"Custom Cell";
    [browserDataArr addObject:data];
    
    
    YBImageBrowser *browser = [YBImageBrowser new];
    browser.dataSourceArray = browserDataArr;
    browser.currentIndex = index;
    [browser show];
}

4.注意

1.currentIndex 一定要在dataSourceArray之后賦值 不然提示越界

5.self.yy_isDecodedForDisplay = YES self.isDecodedForDisplay = YES YYModel會報錯

6.加入一個擴展就是一個回調(diào)@property(nonatomic,copy)void (^hideBlock)(void);

有時候banner跳轉(zhuǎn) 回導致返回的圖片跑到屏幕外,配合viewDidAppear進行暫停輪滑

7 iOS 14黑屏問題 是YYAnimatedImageView有問題

iOS14+Xcode12
搜索修改YYKit中的代碼

- (void)displayLayer:(CALayer *)layer {
    if (_curFrame) {
        layer.contents = (__bridge id)_curFrame.CGImage;
    } else {
        //如果沒有動畫幀,請調(diào)用super實現(xiàn)。iOS 14+ UIImageView使用此委托方法進行渲染。
        if ([UIImageView instancesRespondToSelector:@selector(displayLayer:)]) {
            [super displayLayer:layer];
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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