JiongXing / PhotoBrowser

Elegant photo browser in Swift. 图片与视频浏览器。
MIT License
1.32k stars 207 forks source link

缩略图和原图尺寸不一样的时候会出现问题 #114

Closed masterdegithub closed 5 years ago

masterdegithub commented 5 years ago

在超大图的时候缩图的尺寸可能不和原图尺寸一样,导致查看原图的时候尺寸比例还是和缩图比例一样(缩图可能是被截取过)

JiongXing commented 5 years ago

感谢提出,我优化下

MuRanJiangXia commented 5 years ago

你好,需求和微博 长图显示 一样。点击的时候 缩放效果 不是很好呀 wechatimg5 wechatimg6

JiongXing commented 5 years ago

嗯,我大概知道问题在哪,抽空优化下

MuRanJiangXia commented 5 years ago

你这么有爱呀 ,我也发现了 动画和 长图这个 有点问题

JiongXing commented 5 years ago

@MuRanJiangXia 如果你可以改的话,提交一下代码给我合

MuRanJiangXia commented 5 years ago

@JiongXing 转场动画我不太熟悉呀,你有时间看看吧 ,长图 缩放动画有点问题

MuRanJiangXia commented 5 years ago

@JiongXing

    ///frame  缩放
    let trans = JXPhotoBrowserZoomTransitioning { (browser, index, view) -> CGRect? in
        let indexPath = IndexPath(item: index, section: 0)
        if let cell = collectionView.cellForItem(at: indexPath) {
            let height = (cell as! BaseCollectionViewCell).imageView.image?.size.height ?? 0.0
            let width = (cell as! BaseCollectionViewCell).imageView.image?.size.width ?? 0.0
            let proportion = width / height
            let rect = cell.convert(cell.bounds, to: view)
            return CGRect(x: rect.origin.x, y: rect.origin.y, width: rect.size.width, height: rect.size.width / proportion )
        }
        return nil
    }

应该可以了

JiongXing commented 5 years ago

2.1.3版本已发布,现在给转场动画传入UIImageView即可解决问题。

// 返回"起始/结束"的前置视图
let trans = JXPhotoBrowserZoomTransitioning { (browser, index, view) -> UIView? in
    let indexPath = IndexPath(item: index, section: 0)
    // 获取前置视图
    let cell = collectionView.cellForItem(at: indexPath) as? CustomCell
    return cell?.imageView
}

缩略图如果是长图,建议截取长图的顶部区域作缩略图,这样会更连贯。