SkillAgentSearch skills...

PhotoBrowser

PhotoBrowser is a light weight photo browser, like the wechat, weibo image viewer.

Install / Use

/learn @cuzv/PhotoBrowser
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

License CocoaPods Compatible Carthage Compatible Weibo Twitter

PhotoBrowser

PhotoBrowser is a light weight photo browser, like the wechat, weibo image viewer.

Now, the pure Swift version named SlidingPhoto is available.

Features

  • [x] Present & Dismissal animation & gesture
  • [x] GIF support
  • [x] Display long picture

How does it look like?

<p align="left"> <img src="./Preview/1.gif" width=240px">&nbsp;<img src="./Preview/2.gif" width=240px">&nbsp;<img src="./Preview/3.gif" width=240px"> </p>

Usage

  • Like the UITableView API, We have DataSource an Delegate for load data and handle action
  • Tell PhotoBrowser how many pages would you like to present by conforms protocol PBViewControllerDataSource and implement numberOfPagesInViewController: selector
  • Optional set the initialize page by pb_startPage property
  • Use for static Image - Conforms protocol PBViewControllerDataSource and implement viewController:imageForPageAtIndex: selector
  • Use for web image - Conforms protocol PBViewControllerDataSource and implement viewController:presentImageView:forPageAtIndex:progressHandler selector
  • Support animation - Conforms protocol PBViewControllerDataSource and implement thumbViewForPageAtIndex: tell the start and ended imageView position
  • Action callbacks - Conforms protocol PBViewControllerDelegate and implement viewController:didSingleTapedPageAtIndex:presentedImage: or viewController:didLongPressedPageAtIndex:presentedImage: handle single tap or long press action

Demo code

...
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];
}

For more information checkout the Example in project.

License

PhotoBrowser is available under the MIT license. See the LICENSE file for more info.

View on GitHub
GitHub Stars217
CategoryDevelopment
Updated12d ago
Forks41

Languages

Objective-C

Security Score

100/100

Audited on Mar 17, 2026

No findings