导入框架:https://github.com/mwaterfall/MWPhotoBrowser
#import "LYBMineVC.h"
#import "MWPhotoBrowser.h"
@interface LYBMineVC ()<MWPhotoBrowserDelegate>
@property(nonatomic,strong)NSMutableArray *photos;//存放MWPhoto的数组
@end
@implementation LYBMineVC
- (void)viewDidLoad {
[super viewDidLoad];
[self setMBPhotoBrowser];
}
-(NSMutableArray *)photos{
if(nil==_photos){
_photos =[[NSMutableArray alloc]init];
}
return _photos;
}
//创建MBPhotoBrowser
-(void)setMBPhotoBrowser{
/**
简单的封装
*/
//传过来的是url数组
if(self.mbUrlDataArr.count>0){
for(int i=0;i<self.mbUrlDataArr.count;i++){
MWPhoto *photo= [MWPhoto photoWithURL:[NSURL URLWithString:self.mbUrlDataArr[i]]];
if(self.mbCaptionArr.count>i){
photo.caption=self.mbCaptionArr[i];
}else{
photo.caption=@"";
}
[self.photos addObject:photo];
}
}
//传过来的是image数组
/** MWPhoto* photoOne= [MWPhoto photoWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"one1" ofType:@"png"]]];//注意这里本地图片必须放在目录路径下,不能放在assets中。[MWPhoto photoWithImage:[UIImage imageNamed:@""]]这个方法可以去assets中的图片。
*/
else if(self.mbImageDataArr.count>0){
for(int i=0;i<self.mbImageDataArr.count;i++){
MWPhoto *photo;
photo= [MWPhoto photoWithImage:[UIImage imageNamed:self.mbImageDataArr[i]]];
if(self.mbCaptionArr.count>i){
photo.caption=self.mbCaptionArr[i];
}else{
photo.caption=@"";
}
[self.photos addObject:photo];
}
}
//传过来的是image数组
else if(self.mbUrlAndImageDataArr.count>0){
for(int i=0;i<self.mbUrlAndImageDataArr.count;i++){
MWPhoto *photo;
if([[self.mbUrlAndImageDataArr[i]substringWithRange:NSMakeRange(0, 4)] isEqualToString:@"http"]){//是url
photo= [MWPhoto photoWithURL:[NSURL URLWithString:self.mbUrlDataArr[i]]];
}else {//是图片
photo= [MWPhoto photoWithImage:[UIImage imageNamed:self.mbImageDataArr[i]]];
}
if(self.mbCaptionArr.count>i){
photo.caption=self.mbCaptionArr[i];
}else{
photo.caption=@"";
}
[self.photos addObject:photo];
}
}
MWPhotoBrowser *browser = [[MWPhotoBrowser alloc] initWithDelegate:self];
// Set options
browser.displayActionButton = YES; // 允许显示右上角的分享按钮
browser.displayNavArrows = NO; // 左上角导航返回按钮一直显示
browser.displaySelectionButtons = YES; // 有上角选中按钮
browser.zoomPhotosToFill = YES; // 是否全屏,默认是
browser.alwaysShowControls = YES; // 底部两个箭头一直显示
browser.enableGrid = YES; // 允许网格显示
browser.startOnGrid = YES; // 第一次出现就显示网格,如果是NO的话,第一次出现显示全图,左下角有选择网格显示的按钮
browser.autoPlayOnAppear = NO; // 自动播放第一个video
// // 自定义右上角选择按钮的图片设置
// browser.customImageSelectedIconName = @"home_banner_indicator_sel";
// browser.customImageSelectedSmallIconName = @"home_banner_indicator_nor";
// Present
[self.navigationController pushViewController:browser animated:YES];
// Manipulate
[browser showNextPhotoAnimated:YES];
[browser showPreviousPhotoAnimated:YES];
[browser setCurrentPhotoIndex:0]; //设置当前显示的页码
}
//显示数据的代理方法
- (NSUInteger)numberOfPhotosInPhotoBrowser:(MWPhotoBrowser *)photoBrowser {
return self.photos.count;
}
//滑动的代理方法
- (id <MWPhoto>)photoBrowser:(MWPhotoBrowser *)photoBrowser photoAtIndex:(NSUInteger)index {
if (index < self.photos.count) {
NSLog(@"滑动到哪一页---%lu",(unsigned long)index);
return [self.photos objectAtIndex:index];
}
return nil;
}
//如果需要网格显示缩略图需要实现这个代理方法,并且需要设置 browser.enableGrid = YES;
//- (id <MWPhoto>)photoBrowser:(MWPhotoBrowser *)photoBrowser thumbPhotoAtIndex:(NSUInteger)index{
// return [self.photos objectAtIndex:index];
//}
//点击了分享按钮,如果设置了这个方法就不会弹出分享页面,可以实现自己的操作
- (void)photoBrowser:(MWPhotoBrowser *)photoBrowser actionButtonPressedForPhotoAtIndex:(NSUInteger)index {
NSLog(@"在这里可以实现自己的操作哦");
}
//可选方法
- (void)photoBrowser:(MWPhotoBrowser *)photoBrowser didDisplayPhotoAtIndex:(NSUInteger)index{
NSLog(@"当前显示图片编号----%ld",index);
}
//浏览图片时右上角的选择按钮是否呈选中状态
- (BOOL)photoBrowser:(MWPhotoBrowser *)photoBrowser isPhotoSelectedAtIndex:(NSUInteger)index{
return YES;
}
//右上交按钮的选中方法
- (void)photoBrowser:(MWPhotoBrowser *)photoBrowser photoAtIndex:(NSUInteger)index selectedChanged:(BOOL)selected{
//selected表示是否选中
if (selected) {
NSLog(@"第%ld张图片在被选中",index);
}else{
NSLog(@"第%ld张图片在被选中",index);
}
}
//顶部导航的标题,有navigationBar时title才会显示
- (NSString *)photoBrowser:(MWPhotoBrowser *)photoBrowser titleForPhotoAtIndex:(NSUInteger)index{
NSString *str = nil;
switch (index) {
case 0 :
str = @"这是第1张图片";
break;
case 1 :
str = @"这是第2张图片";
break;
case 2 :
str = @"这是第3张图片";
break;
default:
break;
}
return str;
}
@end
********内存暴涨问题解决:https://www.cnblogs.com/Kingly/p/5235367.html、