PhotoBrowser
PhotoBrowser 是一个轻量级的图片浏览器,类似于微信、微博的图片查看器。
特性
- 显示和消失动画及手势
- 支持 GIF
- 显示长图片
外观如何?
使用方法
- 类似于
UITableView
API,我们有用于加载数据和处理动作的DataSource
和Delegate
。 - 通过符合协议
PBViewControllerDataSource
并实现numberOfPagesInViewController:
选择器,告诉PhotoBrowser
您希望呈现多少页面。 - 可选地通过
pb_startPage
属性设置初始页面。 - 用于静态图片 - 遵守协议
PBViewControllerDataSource
并实现viewController:imageForPageAtIndex:
选择器 - 用于网页图片 - 遵守协议
PBViewControllerDataSource
并实现viewController:presentImageView:forPageAtIndex:progressHandler
选择器 - 支持动画 - 遵守协议
PBViewControllerDataSource
并实现thumbViewForPageAtIndex:
通知对应imageView的起始和结束位置 - 动作回调 - 遵守协议
PBViewControllerDelegate
并实现viewController:didSingleTapedPageAtIndex:presentedImage:
或viewController:didLongPressedPageAtIndex:presentedImage:
处理单次点击或长按动作
示例代码
...
PBViewController *pbViewController = [PBViewController new];
// Use your own subclass of UIImageView to display.
pbViewController.imageViewClass = PBImageView.class;
pbViewController.pb_dataSource = self;
pbViewController.pb_delegate = self;
pbViewController.pb_startPage = sender.tag;
[self presentViewController:pbViewController animated:YES completion:nil];
...
...
#pragma mark - PBViewControllerDataSource
- (NSInteger)numberOfPagesInViewController:(PBViewController *)viewController {
return self.frames.count;
}
- (void)viewController:(PBViewController *)viewController presentImageView:(UIImageView *)imageView forPageAtIndex:(NSInteger)index progressHandler:(void (^)(NSInteger, NSInteger))progressHandler {
NSString *url = [NSString stringWithFormat:@"https://raw.githubusercontent.com/cuzv/PhotoBrowser/dev/Example/Assets/%@.jpg", @(index + 1)];
UIImage *placeholder = self.imageViews[index].image;
[imageView sd_setImageWithURL:[NSURL URLWithString:url]
placeholderImage:placeholder
options:0
progress:progressHandler
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
}];
}
- (UIView *)thumbViewForPageAtIndex:(NSInteger)index {
if (self.thumb) {
return self.imageViews[index];
}
return nil;
}
#pragma mark - PBViewControllerDelegate
- (void)viewController:(PBViewController *)viewController didSingleTapedPageAtIndex:(NSInteger)index presentedImage:(UIImage *)presentedImage {
[self dismissViewControllerAnimated:YES completion:nil];
}
更多信息请查看项目中的示例。
许可证
PhotoBrowser
遵循 MIT 许可证。更多信息请查看 LICENSE 文件。