简单的图片浏览扩展
要运行示例项目,请克隆仓库,并首先从示例目录中运行 pod install
。
只需创建一个图片数组和指定要显示的初始索引,然后使用 MFModalPhotoBrowser 或 MFPushPhotoBrowser 显示图片浏览器。
MFGenericPhoto *photo1 = [MFGenericPhoto new];
photo1.photoData = [NSURL URLWithString:@"https://graph.facebook.com/olivier.poitrey/picture"];
MFGenericPhoto *photo2 = [MFGenericPhoto new];
photo2.photoData = [UIImage imageNamed:@"avatar-placeholder.png"];
NSArray *photoModels = @[photo1, photo2];
[MFModalPhotoBrowser showInViewController:parentVC
photoModels:photoModels initialIndex:1];
虽然 MFPhotoBrowser 的主要目标是提供简单的可扩展性方式,但是它还有一些基本功能
该项目是为扩展设计的。它由三个组件(加载器、项视图和浏览器)组成。它们通过接口相互协作。
加载器负责加载图片数据将其渲染到指定的图像视图。
目前我们有三种类型的图片加载器,分别支持UIImage、NSURL和PHAsset。
您可以继承MFPhotoLoader来支持您的自定义类型,并将其与MFPhotoLoaderFactory注册。
项视图在图片浏览器中扮演与cell相同的作用,但它必须符合定义一组API以控制项视图生命周期的协议 - MFPhotoItemView。
目前我们有一种类型的项视图(MFGenericPhotoItemView),它只包含一个图像视图。
就像cell一样,您可以通过继承UIView并实现以下三个方法来创建自定义UI(协议 - MFPhotoItemView所需),例如创建一个带有描述性标签的新项视图,这在新闻应用中很常见。
- (void)prepareForReuse;
- (void)render;
- (void)dismissWithCompletion:(void (^)(void))completion;
正如其名所示,浏览器是MVC设计模式中的控制器,它控制浏览行为。
有许多自定义方法。
覆盖它来自定义您的展示风格,例如模态、从底部展示、推入导航堆栈。
- (void)showInViewController:(UIViewController *)viewController;
覆盖它以使用您在上一步中创建的项目视图。
- (UIView<MFPhotoItemView> *)createPhotoItemView;
覆盖它以自定义浏览器视图顶部的UI,例如添加一个模拟导航栏。
- (void)setupTopView;
覆盖它以自定义浏览器视图底部的UI,例如添加一个底部栏用于评论/分享/喜欢。
- (void)setupBottomView;
覆盖它们以处理事件,例如滚动、单击、双击。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView NS_REQUIRES_SUPER;
- (BOOL)handleSingleTap:(NSUInteger)page;
- (BOOL)handleDoubleTap:(NSUInteger)page;
MFPhotoBrowser可以通过CocoaPods获得。要安装它,只需将以下行添加到您的Podfile中
pod "MFPhotoBrowser"
MFPhotoBrowser building受到了之前开源工具的启发。以下资源特别有用
MFPhotoBrowser是MIT许可下的。有关更多信息,请参阅LICENSE文件。