類似微博微信的照片瀏覽器:PhotoBrowser
How to use
-
Like theUITableViewAPI, We haveDataSourceanDelegatefor load data and handle action
-
TellPhotoBrowserhow many pages would you like to present by conforms protocolPBViewControllerDataSourceand implementnumberOfPagesInViewController:selector
-
Optional set the initialize page by invokesetInitializePageIndex:method
-
Use for static Image
Conforms protocolPBViewControllerDataSourceand implementviewController:imageForPageAtIndex:selector
-
Use for web image
Conforms protocolPBViewControllerDataSourceand implementviewController:presentImageView:forPageAtIndex:selector
-
Handle action
Conforms protocolPBViewControllerDataSourceand implementviewController:didSingleTapedPageAtIndex:presentedImage:orviewController:didLongPressedPageAtIndex:presentedImage:handle single tap or long press action
Demo
...
PBViewController *pbViewController = [PBViewController new];
pbViewController.pb_dataSource = self;
pbViewController.pb_delegate = self;
[pbViewController setInitializePageIndex:2];
[self presentViewController:pbViewController animated:YES completion:nil];
...
...
#pragma mark - PBViewControllerDataSource
- (NSInteger)numberOfPagesInViewController:(PBViewController *)viewController {
return self.urls.count;
}
- (void)viewController:(PBViewController *)viewController presentImageView:(UIImageView *)imageView forPageAtIndex:(NSInteger)index {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSString *path = self.urls[index];
NSData *data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:path] options:0 error:nil];
UIImage *image = [[UIImage alloc] initWithData:data];
dispatch_async(dispatch_get_main_queue(), ^{
imageView.image = image;
});
});
}
...
...
#pragma mark - PBViewControllerDelegate
- (void)viewController:(PBViewController *)viewController didSingleTapedPageAtIndex:(NSInteger)index presentedImage:(UIImage *)presentedImage {
NSLog(@"didSingleTapedPageAtIndex: %@", @(index));
[viewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}
- (void)viewController:(PBViewController *)viewController didLongPressedPageAtIndex:(NSInteger)index presentedImage:(UIImage *)presentedImage {
NSLog(@"didLongPressedPageAtIndex: %@", @(index));
}