PhotoBrowser is a light weight photo browser, like the wechat, weibo image viewer.
- Present & Dismissal animation & gesture
- GIF support
- Display long picture
- Like the
UITableView
API, We haveDataSource
anDelegate
for load data and handle action - Tell
PhotoBrowser
how many pages would you like to present by conforms protocolPBViewControllerDataSource
and implementnumberOfPagesInViewController:
selector - Optional set the initialize page by
pb_startPage
property - Use for static Image - Conforms protocol
PBViewControllerDataSource
and implementviewController:imageForPageAtIndex:
selector - Use for web image - Conforms protocol
PBViewControllerDataSource
and implementviewController:presentImageView:forPageAtIndex:progressHandler
selector - Support animation - Conforms protocol
PBViewControllerDataSource
and implementthumbViewForPageAtIndex:
tell the start and ended imageView position - Action callbacks - Conforms protocol
PBViewControllerDelegate
and implementviewController:didSingleTapedPageAtIndex:presentedImage:
orviewController:didLongPressedPageAtIndex:presentedImage:
handle single tap or long press action
...
PBViewController *pbViewController = [PBViewController new];
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];
}
For more information checkout the Example in project.
PhotoBrowser
is available under the MIT license. See the LICENSE file for more info.
Follow me on Twitter (@mochxiao)