OOPhotoBrowser 2.0.11

OOPhotoBrowser 2.0.11

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布日期最新版本发布日期2019年4月

Oliver ONeill 维护。



 
依赖
SDWebImage= 4.2.3
DACircularProgress>= 0
pop>= 0
 

  • 作者
  • Oliver ONeill

OOPhotoBrowser

这是一个基于 IDMPhotoBrowser 的分支,允许与 ImageFeedCollectionViewController 集成,或者实现自定义的数据源,而不是固定的数组。
IDMPhotoBrowser 是基于 MWPhotoBrowser 的新实现。

我们添加了来自 Facebook 和 Tweetbot 的照片浏览器的用户体验和技术功能。

新功能

  • 使用 ARC
  • 使用 SDWebImage 加载图像
  • 显示图像进度
  • 极简主义 Facebook 类似界面,向上或向下滑动以关闭
  • 可以在动作表中添加自定义操作

功能

  • 可以通过提供图像对象、设备上图像的文件路径或网络图像的 URL 来显示一个或多个图像
  • 无缝处理从网络上下载和缓存照片
  • 可以缩放和滚动照片,并可选地显示标题

屏幕截图

Alt Alt Alt Alt Alt

使用方法

请参阅以下代码片段,了解如何实现照片浏览器。

首先创建包含 IDMPhoto 对象的 photo 数组

// URLs array
NSArray *photosURL = @[[NSURL URLWithString:@"http://farm4.static.flickr.com/3567/3523321514_371d9ac42f_b.jpg"], 
[NSURL URLWithString:@"http://farm4.static.flickr.com/3629/3339128908_7aecabc34b_b.jpg"], 
[NSURL URLWithString:@"http://farm4.static.flickr.com/3364/3338617424_7ff836d55f_b.jpg"], 
[NSURL URLWithString:@"http://farm4.static.flickr.com/3590/3329114220_5fbc5bc92b_b.jpg"]];
    
// Create an array to store IDMPhoto objects
NSMutableArray *photos = [NSMutableArray new];

for (NSURL *url in photosURL) {
	IDMPhoto *photo = [IDMPhoto photoWithURL:url];
	[photos addObject:photo];
}
	
// Or use this constructor to receive an NSArray of IDMPhoto objects from your NSURL objects
NSArray *photos = [IDMPhoto photosWithURLs:photosURL];

有三种主要方式来展示 photoBrowser,通过屏幕上的淡入淡出或从一个现有视图中的缩放效果。

使用简单的淡入淡出过渡

IDMPhotoBrowser *browser = [[IDMPhotoBrowser alloc] initWithPhotos:photos];

从视图缩放效果

IDMPhotoBrowser *browser = [[IDMPhotoBrowser alloc] initWithPhotos:photos animatedFromView:sender];

当使用此动画时,您可以设置 scaleImage 属性,以防从视图中的图像与浏览器中显示的图像不同,因此它将动态缩放它

browser.scaleImage = buttonSender.currentImage;

使用模态视图控制器进行显示

[self presentViewController:browser animated:YES completion:nil];

定制

工具栏

您可以定制工具栏。您可以设置三个布尔属性:displayActionButton(默认为 YES)、displayArrowButton(默认为 YES)和 displayCounterLabel(默认为 NO)。如果您根本不需要工具栏,可以将 displayToolbar 设置为 NO。

工具栏设置示例

browser.displayActionButton = NO;
browser.displayArrowButton = YES;
browser.displayCounterLabel = YES;

可以在工具栏箭头中使用您自己的图像

browser.leftArrowImage = [UIImage imageNamed:@"IDMPhotoBrowser_customArrowLeft.png"];
browser.rightArrowImage = [UIImage imageNamed:@"IDMPhotoBrowser_customArrowRight.png"];
browser.leftArrowSelectedImage = [UIImage imageNamed:@"IDMPhotoBrowser_customArrowLeftSelected.png"];
browser.rightArrowSelectedImage = [UIImage imageNamed:@"IDMPhotoBrowser_customArrowRightSelected.png"];

如果您想使用自定义操作,请设置 actionButtonTitles 数组,其中包含动作表的标题。然后,从 IDMPhotoBrowser 代理实现 photoBrowser:didDismissActionSheetWithButtonIndex:photoIndex: 方法

browser.actionButtonTitles = @[@"Option 1", @"Option 2", @"Option 3", @"Option 4"];

其他

您可以进行的其他自定义包括:使用白色背景颜色,不显示完成按钮和更改完成按钮的背景图片。

browser.useWhiteBackgroundColor = YES;
browser.displayDoneButton = NO;
browser.doneButtonImage = [UIImage imageNamed:@"IDMPhotoBrowser_customDoneButton.png"];

如果您想在用户滚动时保留界面显示:

browser.autoHideInterface = NO;

在展示和删除照片时,可以使用平滑的 pop 动画。

browser.usePopAnimation = YES;

如果展示的视图控制器没有状态栏,在某些情况下可以强制将其隐藏。

browser.forceHideStatusBar = YES;

可以禁用垂直删除滑动手势。

browser.disableVerticalSwipe = YES;

通过触摸删除照片浏览器(而不是显示/隐藏控件)。

browser.dismissOnTouch = YES;

照片标题

只需在特定照片上设置 caption 属性,即可简单显示照片标题。

IDMPhoto *photo = [IDMPhoto photoWithFilePath:[[NSBundle mainBundle] pathForResource:@"photo2l" ofType:@"jpg"]];
photo.caption = @"Campervan";

如果没有设置标题属性,则不会显示标题。

自定义标题

默认情况下,标题是一个简单的黑色透明视图,其中有一个标签显示照片的标题,标题是白色的。如果您想实现自己的标题视图,请按照以下步骤进行:

  1. 可选地为您的照片使用 IDMPhoto 的子类,这样您就可以存储比简单的标题字符串更多的数据。
  2. 子类化 IDMCaptionView 并覆盖 -setupCaption-sizeThatFits:(以及您认为合适的任何其他 UIView 方法)来布局您自己的视图并设置其大小。有关更多信息,请参阅 IDMCaptionView.h
  3. 实现 -photoBrowser:captionViewForPhotoAtIndex: IDMPhotoBrowser 代理方法(如下所示)。

自定义标题视图的示例代理方法

- (IDMCaptionView *)photoBrowser:(IDMPhotoBrowser *)photoBrowser captionViewForPhotoAtIndex:(NSUInteger)index {
	IDMPhoto *photo = [self.photos objectAtIndex:index];
	MyIDMCaptionViewSubclass *captionView = [[MyIDMCaptionViewSubclass alloc] initWithPhoto:photo];
	return captionView;
}

将库添加到您的项目中

使用 CocoaPods

只需将 pod 'IDMPhotoBrowser' 添加到您的 Podfile。

直接将源代码包含在您的项目中

使用开源库

许可证

本项目使用 MIT 许可证。