Giter Site home page Giter Site logo

lantern's Introduction

Lantern(花灯)

Lantern(花灯)是一个基于Swift的高可用视图框架。它基于iOS原生的图片/视频浏览功能进行封装,并提供了更加酷炫的交互方式。此外,它还提供丰富的接口,扩展灵活,能让App快速集成浏览功能。

经过我们一年多的试用和改进,现将Lantern面向社区开源,希望和大家一起改进App图片/视频浏览交互,提供更好的用户体验。

本项目由丰巢研发团队开发维护,并基于Apache-2.0协议开源的项目,源地址为:https://github.com/JiongXing/PhotoBrowser。后续将逐步全面迁移到此处,敬请留意。

效果预览

特性

  • 基于纯Swift开发
  • 支持图片、视频、图片与视频混合浏览
  • 支持横向和竖向滚动
  • 支持嵌入导航栏
  • 支持pushpresent打开
  • 支持数据源实时变更,框架不持有数据源
  • 支持自定义转场动画,框架提供了FadeZoomSoomthZoom三个转场动画的实现
  • 支持自定义Cell,框架提供了常用的图片展示Cell的实现
  • 支持网络图片加载、查看原图加载,由用户自由选择其他框架进行图片加载与缓存
  • 支持各种附加控件的添加,框架提供了两种页面指示器的实现,以及在例子工程提供了加载进度环的实现

版本更新记录

Version 1.1.5

2023/08/03

  • 新增实况动图预览场景

  • 新增视频图片混合场景

  • 新增ImageCell拖拽视图回调

  • 修复若干问题,优化图片浏览框架

Version 1.1.4

2022/06/23

  • 修复图片删除闪退问题

  • 内存泄露优化

  • 监控网络图片imageView刷新问题

  • 长图显示抖动动画效果优化

Version 1.1.2

2021/03/30

  • 加载更多新增图片时,图片偏移问题的优化

  • 网络图片加载完成后,视图刷新回调优化处理

  • 自定义Cell查看原图优化

  • Example的Demo文件命名规范

Version 1.1.1

2021/01/20

  • 优化屏幕旋转时闪屏修复

Version 1.1.0

2020/09/16

  • 优化LanternCell,支持子类自定义转场动画
  • 优化LanternImageCell,暴露方法支持子类自定义创建视图
  • 更好支持嵌入导航栏场景下的转场动画
  • 视频与图片混合浏览视频的拖拽动画优化
  • Example的Demo样式更新,更直观的UI样式

接入文档

更新日志

深圳市丰巢科技有限公司成立于2015年6月6日,是一家致力以智能快递柜为切入点,提供最后一公里交付解决方案的科技公司。

lantern's People

Contributors

andyyehoo avatar jiongxing avatar olaf2018 avatar sourcelliu avatar xiaoallocinit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lantern's Issues

页面消失时候 提供一个设置动画上截图的contentModel 属性

在默认加载 transitionAnimator 中提供图片载体, 消失的时候 截图 snap2 的contentModel和图片载体的contentModel不一致, 导致动画结束时候会有闪动的效果. 能否提供一个属性, 让用户来自定义截图的contentModel, 或者将其与视图载体的contentModel同步

页面刷新

LanternView的layoutSubviews触发次数较多,刷新很耗性能;当拖拽视频,会重复播放。感觉用collectionview实现会舒服点。

超过屏幕高度的网络图片,下拉无法关闭

demo中Kingfisher 加载示例中 KingfisherImageViewController:

  1. 修改图片源地址为长图: let url = URL(string: "https://ewow-community.epal.gg/data/IdfF31E0/community/1614666157363137079773003777.png")

  2. 双指放大图片

  3. 缩小图片到原始状态

  4. 下拉, 无法关闭!!!

问题在缩放图片后, scrollView.contentOffset.y > 0: 代码问题如下:

// 向下滑动,如果图片顶部超出可视区域,不响应手势
if scrollView.contentOffset.y > 0 {
print("向下滑动,scrollView.contentOffset.y = (scrollView.contentOffset.y) ")
return false
}
image

数据源更新,页面刷新修改cell类型时显示不正常问题

当数据源改动,页面更新,重新设置cell类型时,当前page会显示之前的cell,滑动后才会恢复正常显示。
例如当前page显示视频,刷新后当前page应该为图片,但实质刷新后还是在展示视频。
调用resetCells可以重置cell位置,但里面跳过了当前的pageIndex,visibleCells清空后,之前应该修改类型的cell没有添加上去,

            if index == pageIndex {
//                continue
            }
            if index == pageIndex && visibleCells[index] != nil {
//                continue
            }

将这两处的continue注释掉可以解决此问题,但不知道这两行的具体作用,不知道会不会导致其他问题。
希望作者可以协助解答 ~ 感谢

SwiftPM Error

When use Lantern as SwiftPackage Dependency, get the error below:

because every version of Lantern contains incompatible tools version and root depends on Lantern 1.1.1..<2.0.0, version solving failed.

Xcode: 12.4

建议更改截图方式由snapshot(with:)方法改为fastSnapshot(with:)方式

在app中使用本框架,在图片浏览器界面,拖动图片时,背景颜色偶尔为白色,猜测是渲染问题,经定位发现是使用的snapshot(with:),在改为fastSnapshot(with:)后显示正常,建议修改。涉及的文件:LanternFadeAnimator.swift、LanternSmoothZoomAnimator.swift、LanternZoomAnimator.swift。

支持Catalyst环境吗,发现图片浏览无法切换。

你好,当运行在MacOS Catalyst环境下,点击浏览多张图片时,无法用鼠标滑动(鼠标滚轮也不行)等来进行图片的切换。
同样的代码在iOS运行时,可正常滑动来切换图片。

MacOS版本:11.4.
PhotoBrowser版本:3.1.3.

刷新数据的时候图片位置发生偏移

在lantern.didChangedPageIndex方法中进行网络请求,然后调用lantern.reloadData方法,会导致图片偏移,网速要足够快。

例:
如下所示,当我从第6张开始滑动到第7张图片的时候,触发了lantern.didChangedPageIndex里面的网络请求,请求完成执行lantern.reloadData方法,更新图片数量。

1614673306773642.mp4

无法循环浏览

浏览到最后一页就滑不动了,没办法自动循环到第一页去

Swift Package 无法导入

SPM导入提示错误:

Showing All Messages
the package at '/' cannot be accessed (malformedResponse("unexpected tree entry '100644 blob ff70d8c7b62752b04c719821db2af6d88d15fd51\t"\345\237\272\347\241\200\347\224\250\346\263\225.md"' in '100644 blob 4b34528ba8a19631800e0130c8bf3d515e024b58\t.gitignore\n040000 tree 5901d6340bd799c9447d78b09a760d518ecc9617\tAssets\n040000 tree a030653d27adea0944fb04a83b9e371f7de7598d\tExample\n100644 blob 1b84fe88c6aa0f8f3858657296c84d2dfd63705b\tLICENSE\n100644 blob df59daff61de0ae8aca7da2f7c3c33fc2c943e44\tLantern.podspec\n100644 blob 5120a427213d58dd098d7bc0c383c9a6500abd0c\tPackage.swift\n100644 blob 11ade85f05c694926c401156b3a7c59cac921dbb\tREADME.md\n100644 blob d6203561ee5bb7c2a237c5308e9806e90918e11f\tReleaseNotes.md\n040000 tree 5fa8ce6eb03b88519d2c1eab3d32b81e4e6ebe5f\tSources\n100644 blob ff70d8c7b62752b04c719821db2af6d88d15fd51\t"\345\237\272\347\241\200\347\224\250\346\263\225.md"\n100644 blob 621a815865aab5a41b32a8bac4a9cf5208185eb0\t"\347\216\257\345\242\203\344\270\216\345\256\211\350\243\205.md"\n100644 blob e56dcdb11b2ba71f32be76ad620fbb583416967e\t"\351\253\230\347\272\247\347\224\250\346\263\225.md"'"))

Xcode版本:Xcode14-beta1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.