Need help with KNPhotoBrowser?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

298 Stars 60 Forks MIT License 507 Commits 1 Opened issues


📷 图片 || 视频 浏览器(本地和网络) , UIViewController + CollectionView , 完美适配 iPhone 以及 iPad ,屏幕旋转功能 , 适配SDWebImage 5.0

Services available


Need anything else?

Contributors list

# 97,938
501 commits


CocoaPods CocoaPods Support 


中文 | English

most like photo or video browser of
in China

if you get any function to add, just contact me by E-mail. Welcome to Star


Update content

| DESCRIPTION | STATUS| | ------------- | ------------ | | Base on UIViewController |       √ | | Adapt for rotate of the screen |       √ | | Adapt for

|       √ | | Locate and net image and gif image |       √ | | Locate and net video |       √ | | PanGesture to dismiss or cancel [API] |       √ | | Prefetch image, max is 8 [API] |       √ | | Video player auto play [API] |       √ | | Video player times speed play [API] |       √ | | Show custom view on PhotoBrowser [API] |       √ | | Show custom view on PhotoBrowser, and set animated following photoBrowser [API] |       √ | | Before the photoBrowser show, all image control can be custom [API] |       √ | | All operation though the delegate [Delegate] |       √ |

1.Before use, you need to know

  • 1.depend
    , if need locate gif image, depend
  • 2.image and video play is ready for use
  • image or video is ready for use
  • 4.custom control as you wish
  • manager image or video of download is not contain

2.How to use

(1).init base params

// 1.make every control as an object, put it into an array
KNPhotoItems *items = [[KNPhotoItems alloc] init];
items.url = @"http://xxxxxxxx/xxx.png";
items.sourceView = imageView;
// if current url is video type
// items.isVideo = true;
// if current image is locate gif
// itemM.isLocateGif = true;
[self.itemsArr addObject:items];

(2).init PhotoBrowser

KNPhotoBrowser *photoBrowser = [[KNPhotoBrowser alloc] init];
photoBrowser.itemsArr = [self.itemsArr copy];
photoBrowser.currentIndex = tap.view.tag;

/// photoBrowser will present [photoBrowser present];

/// photoBrowser will dismiss /// [photoBrowser dismiss];

(3).function's describe of delegate

photoBrowser will dismiss
/// photoBrowser will dismiss with currentIndex
- (void)photoBrowser:(KNPhotoBrowser *)photoBrowser willDismissWithIndex:(NSInteger)index;
photoBrowser right button did click
/// photoBrowser right top button did click with currentIndex (you can custom you right button, but if you custom your right button, that you need implementate your target action)
- (void)photoBrowser:(KNPhotoBrowser *)photoBrowser rightBtnOperationActionWithIndex:(NSInteger)index;


(4).component of browser : KNPhotoItems

base params of items
/// if it is network image,  set `url` , do not set `sourceImage`
@property (nonatomic,copy  ) NSString *url;

/// if it is locate image, set sourceImage, do not set url @property (nonatomic,strong) UIImage *sourceImage;

/// sourceView is current control to show image or video. /// 1. if the sourceView is kind of UIImageView or UIButton , just only only only set the sourceView. /// 2. if the sourceView is the custom view , set the sourceView, but do not forget set sourceLinkArr && sourceLinkProperyName. @property (nonatomic,strong) UIView *sourceView;

custom source View (it is very nice)
@property (nonatomic,strong) NSArray *sourceLinkArr;

/** eg: if the lastObject is kind of UIImageView , the sourceLinkProperyName is image if the lastObject is kind of UIButton , the sourceLinkProperyName is currentBackgroundImage or currentImage */

/// the property'name of the sourceLinkArr lastObject @property (nonatomic,copy ) NSString *sourceLinkProperyName;

3.How to install

pod 'KNPhotoBrowser'

// terminal : cd ~(current path) pod install or pod update

5.By the way

  • if you get any idea, just contact me! Thanks

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.