测试测试结果 | ✗ |
语言语言 | Obj-CObjective C |
许可 | MIT |
发布最后发布 | 2017年5月 |
由 Flávio Caetano 和 Eduardo Callado 维护。
依赖 | |
SDWebImage | = 4.0.0 |
DACircularProgress | >= 0 |
pop | >= 0 |
IDMPhotoBrowser 基于以下实现的新版本:MWPhotoBrowser。
我们添加了受 Facebook 和 Tweetbot 图片浏览器启发的用户体验和技术功能。
UIImage
对象、设备中图片的文件路径或在线图片的 URL 来显示一个或多个图片以下代码片段演示了如何实现图片浏览器。
首先创建一个包含 IDMPhoto 对象的图片数组
// 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;
在展示和关闭照片时,可以使用平滑的 弹出 动画
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";
如果未设置标题属性,则不会显示任何标题。
默认情况下,标题是一个简单的黑色透明视图,上面有一个标签,以白色显示照片的标题。如果您想实现自己的标题视图,请按照以下步骤进行
IDMPhoto
的子类来存储您的照片,这样您就可以存储比简单标题字符串更多的数据。IDMCaptionView
并重写 -setupCaption
和 -sizeThatFits:
(以及您认为合适的任何其他 UIView 方法)以布局您自己的视图并设置其大小。更多详细信息可以在 IDMCaptionView.h
中找到-photoBrowser:captionViewForPhotoAtIndex:
IDMPhotoBrowser 代理方法(如下所示)。自定义标题视图的示例代理方法
- (IDMCaptionView *)photoBrowser:(IDMPhotoBrowser *)photoBrowser captionViewForPhotoAtIndex:(NSUInteger)index {
IDMPhoto *photo = [self.photos objectAtIndex:index];
MyIDMCaptionViewSubclass *captionView = [[MyIDMCaptionViewSubclass alloc] initWithPhoto:photo];
return captionView;
}
此项目使用 MIT 许可证。