CocoaPods trunk is moving to be read-only. Read more on the blog, there are 18 months to go.

LGCyImageBrowser 2.0.11

LGCyImageBrowser 2.0.11

Maintained by lanligang mac mini.



  • By
  • LenSky

CyImageBrowser 本品依赖于 SDWebImage

  • 图片浏览器,支持缩放 ,拖动消失、双击放大等,支持桥接swift 语言

!! 支持 cocoapod 安装

	pod 'LGCyImageBrowser'

如果找不到请用 'pod repo update' 命令 更新本地仓库

效果图

效果图

属性以及方法说明

类名 方法、属性名 用途
CyImageBrowser + (instancetype)cyImageBrower; 图片查看器的指定构建方法
同上 @property (nonatomic, assign) BOOL isShowInformation; 是否需要显示图片详细信息部件View
同上 @property (nonatomic, copy) void (^ makeInfoView)(UIView *infoView); 设置底部图片详细信息View 样式 以及初始化 部件上的小控件此处只执行一次
同上 @property (nonatomic, copy) void (^ makePageLable)(UILabel *pageLable); 设置当前页码 Lable 的 各种属性 只执行一次
同上 @property (nonatomic, strong) void (^ changePageFormart)(UILabel *pageLable,NSInteger page,NSInteger totalCount); 当页数发生变化时 会调用此代码块用户可以自己设置页数显示格式
同上 @property (nonatomic, copy) void (^ changePageInfo)(UIView *infoView, CyBrowerInfo *info); 当前页码改变时,修改图片详细信息时候使用
同上 @property (nonatomic, strong) void (^ longGestureAction)(CyBrowerInfo *info,NSInteger page); 当用户长按图片时候在此进行相应的处理
同上 - (void)showBrowerInfos:(CyBrowerInfos *)browerInfos; 将控件显示到window 上
CyBrowerInfos @property (nonatomic, strong) NSArray <CyBrowerInfo *> *items; 存放图片信息的数组
同上 @property (nonatomic, assign) NSInteger currentIndex; 当前是第几张图片的索引值
CyBrowerInfo @property (nonatomic, strong, nullable) id image; 图片对象,支持 字符串的http 的url NSData image
同上 @property (nonatomic, weak, nullable) UIView *showView; 没有显示到查看器时候的一个View 用于截图,不设置可以不用走动画
同上 @property (nonatomic, assign, readonly) BOOL isWeb; 只读属性,查看图片是否是 网络图片
同上 @property (nonatomic, strong) id imgInfo; 图片详情可为空,也可以设置任何额外参数

在swift 中使用方法

桥接 bridge.h 中
…………
#import "CyImageBrowser.h"
…………

OC 创建和使用

	CyImageBrowser *brower =[CyImageBrowser cyImageBrower];
	brower.isShowInformation = YES;//是否显示图片详情
//	[brower setMakePageLable:^(UILabel * _Nonnull pageLable) {
//		pageLable.frame = CGRectMake(0, MAINScreenHeight - 40, MAINScreenWidth, 30); //自定义控件位置
//	}];

	[brower setChangePageFormart:^(UILabel * _Nonnull pageLable, NSInteger page, NSInteger totalCount) {
		//进行格式化 标题的
		pageLable.text = [NSString stringWithFormat:@"示例图 %@ | %@",@(page + 1),@(totalCount)];
	}];

	[brower setChangePageInfo:^(UIView * _Nonnull infoView, CyBrowerInfo * info) {
		UITextView *titleLable =  [infoView viewWithTag:100];
		if (!info.imgInfo) {
			infoView.hidden = YES;
		}else{
			infoView.hidden = NO;
		}
		titleLable.text =  info.imgInfo;
	}];

	//设置详情的View
	[brower setMakeInfoView:^(UIView * _Nonnull infoView) {
		//info View 内容的View
		infoView.userInteractionEnabled = YES;
		infoView.frame = CGRectMake(0, CGRectGetHeight(self.view.frame) - 100, CGRectGetWidth(self.view.frame), 100);
		infoView.backgroundColor = [[UIColor blackColor]colorWithAlphaComponent:0.35];
		UITextView *lable =[UITextView new];
		lable.backgroundColor = [UIColor clearColor];
		lable.font = [UIFont systemFontOfSize:14.0f];
		lable.tag = 100;
		lable.textColor = [UIColor whiteColor];
		lable.editable = NO;
		[infoView addSubview:lable];
		[lable mas_makeConstraints:^(MASConstraintMaker *make) {
			make.edges.mas_equalTo(UIEdgeInsetsMake(10, 10, 10, 10));
		}];
	}];

	NSArray *urls = @[
	@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1598598749779&di=434d63d3ab1874918cd8a92b9dea7b8d&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201703%2F21%2F20170321130742_iz4Tv.thumb.700_0.jpeg",	@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1598531420951&di=99bf3923f9d220114425136e1f2d9252&imgtype=0&src=http%3A%2F%2Fa1.att.hudong.com%2F05%2F00%2F01300000194285122188000535877.jpg",
	@"https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3690672463,4117611042&fm=26&gp=0.jpg",
		@"https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3188859226,695738267&fm=26&gp=0.jpg",
	@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1598599190512&di=225d278a317d021794ef8d16db5afa33&imgtype=0&src=http%3A%2F%2Fimg3.imgtn.bdimg.com%2Fit%2Fu%3D1525173583%2C3452221429%26fm%3D214%26gp%3D0.jpg",	@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1598597130767&di=29b58216afe1bb3e5e4ecf85a0a5e2f0&imgtype=0&src=http%3A%2F%2Fimg3.imgtn.bdimg.com%2Fit%2Fu%3D1094758473%2C542124930%26fm%3D214%26gp%3D0.jpg",
	@"yqhy_kuang2_img",	[UIImage imageNamed:@"hone_banner_img"]
	];

	NSArray *imgMSgs = @[
		@"上午离家下午回,声音未改肤已黑。夫妻相见不相识,笑问黑蛋你找谁?",
		@"幸福bai就是猫吃鱼,狗吃肉du,奥特曼打小怪兽。",
		@"如果喜欢是性感猫咪 ,那爱本该是温柔野兽。",
			@"我是一bai只可怜的流浪猫,请领养我回家。",
		@"唯美的意思是追求绝对的美,但真正意义上的唯美并不存在于这个世界。 唯美提倡“为艺术而艺术",	@"当夜幕降临,小花猫就显得特别bai精神,它瞪着圆圆的大眼du睛守在老鼠家的门zhi口静静地等待着,一有目标出现,小猫会一下子扑过去死死地捉住,然后美餐一顿.",
		@"小花猫特别贪睡,一天到晚总是眯着眼睛打盹,可是睡觉时它的耳朵特别灵敏,只要有声音它的耳朵就会动一下,如果有人走进它,它会突然站起来.小花猫爱清洁讲卫生,经常用舌头舔身子,除去身上的脏物,小花猫从来不随地大小便.在奶奶家的房前有一棵弯弯的小树成了小花猫游玩的地方,它喜欢爬到树上然后又从上面跳下来,真是个小调皮"
	];

	CyBrowerInfos *infos = [CyBrowerInfos new];
	infos.currentIndex = 2;


	NSMutableArray *m = [@[] mutableCopy];
	for (int i = 0; i< urls.count; i++) {
		CyBrowerInfo *info = [CyBrowerInfo new];
		info.showView = _imgView;
		info.image =urls[i];
		if (imgMSgs.count > i) {
			info.imgInfo = imgMSgs[i];
		}
		m[i] = info;
	}
	infos.items = m;
	[brower showBrowerInfos:infos];

swift 创建和使用

import UIKit
import SnapKit

class ImgBrowViewController: UIViewController {

	lazy var img_view: UIImageView = {
		let imgV = UIImageView()
		imgV.contentMode = .scaleAspectFit
		return imgV
	}()
    override func viewDidLoad() {
        super.viewDidLoad()
		view.backgroundColor = .white
		let button = UIButton(type: .custom)
		button.backgroundColor = .red
		button.addTarget(self, action: #selector(showImgBrowClicked), for: .touchUpInside)
		view.addSubview(button)


		view.addSubview(img_view)

		img_view.sd_setImage(with: URL(string: "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1598531420951&di=99bf3923f9d220114425136e1f2d9252&imgtype=0&src=http%3A%2F%2Fa1.att.hudong.com%2F05%2F00%2F01300000194285122188000535877.jpg"), completed: nil)

		img_view.snp.makeConstraints { (m) in
			m.height.equalTo(300.f_pt)
			m.width.equalTo(300.f_pt)
			m.top.equalTo(80.f_pt)
		}


		button.snp.makeConstraints { (m) in
			m.size.equalTo(CGSize(width: 150.f_pt, height: 150.f_pt))
			m.center.equalTo(view)
		}
    }

	@objc func showImgBrowClicked(btn:UIButton){

		let brower = CyImageBrowser.cyImageBrower()
		brower.isShowInformation = true
		brower.changePageFormart =   { (pageLable:UILabel,page:Int,totalCount:Int)->Void in
			pageLable.text = "示例图" + String(page + 1) + "|" + String(totalCount)
		}

		brower.changePageInfo = { (infoView:UIView,info:CyBrowerInfo)->Void in
			if let titleLable:UITextView = infoView.viewWithTag(100) as? UITextView {
				if info.image != nil {
					infoView.isHidden = false
				}else{
					infoView.isHidden = true
				}
				titleLable.text = info.imgInfo as?String
			}
		}

		brower.makeInfoView = {(infoView:UIView)->Void in
			infoView.isUserInteractionEnabled = false
			infoView.frame = CGRect(x: 0, y: self.view.frame.height - 100, width: self.view.frame.width, height: 100)
			infoView.backgroundColor = UIColor.black.withAlphaComponent(0.35)
			let textView = UITextView()
			textView.tag = 100
			textView.textColor = .white
			textView.backgroundColor = .clear
			textView.isEditable = false
			infoView.addSubview(textView)
			textView.snp.makeConstraints { (m) in
				m.edges.equalTo(UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10))
			}
		}

		let imgs = ["https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1598598749779&di=434d63d3ab1874918cd8a92b9dea7b8d&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201703%2F21%2F20170321130742_iz4Tv.thumb.700_0.jpeg","https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1598531420951&di=99bf3923f9d220114425136e1f2d9252&imgtype=0&src=http%3A%2F%2Fa1.att.hudong.com%2F05%2F00%2F01300000194285122188000535877.jpg","https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3690672463,4117611042&fm=26&gp=0.jpg","https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3188859226,695738267&fm=26&gp=0.jpg","https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1598599190512&di=225d278a317d021794ef8d16db5afa33&imgtype=0&src=http%3A%2F%2Fimg3.imgtn.bdimg.com%2Fit%2Fu%3D1525173583%2C3452221429%26fm%3D214%26gp%3D0.jpg","https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1598597130767&di=29b58216afe1bb3e5e4ecf85a0a5e2f0&imgtype=0&src=http%3A%2F%2Fimg3.imgtn.bdimg.com%2Fit%2Fu%3D1094758473%2C542124930%26fm%3D214%26gp%3D0.jpg"]


		let imgMSgs = ["上午离家下午回,声音未改肤已黑。夫妻相见不相识,笑问黑蛋你找谁?",
		"幸福bai就是猫吃鱼,狗吃肉du,奥特曼打小怪兽。",
		"如果喜欢是性感猫咪 ,那爱本该是温柔野兽。",
			"我是一bai只可怜的流浪猫,请领养我回家。",
		"唯美的意思是追求绝对的美,但真正意义上的唯美并不存在于这个世界。 唯美提倡“为艺术而艺术",	"当夜幕降临,小花猫就显得特别bai精神,它瞪着圆圆的大眼du睛守在老鼠家的门zhi口静静地等待着,一有目标出现,小猫会一下子扑过去死死地捉住,然后美餐一顿.",
		"小花猫特别贪睡,一天到晚总是眯着眼睛打盹,可是睡觉时它的耳朵特别灵敏,只要有声音它的耳朵就会动一下,如果有人走进它,它会突然站起来.小花猫爱清洁讲卫生,经常用舌头舔身子,除去身上的脏物,小花猫从来不随地大小便.在奶奶家的房前有一棵弯弯的小树成了小花猫游玩的地方,它喜欢爬到树上然后又从上面跳下来,真是个小调皮"]

		let browerInfos = CyBrowerInfos()
		browerInfos.currentIndex = 1
		var temArr = Array<CyBrowerInfo>()
		for i in 0..<imgs.count {
			let  info = CyBrowerInfo()
			info.image = imgs[i]
			info.showView = img_view
			if (imgMSgs.count > i) {
				info.imgInfo = imgMSgs[i];
				temArr.append(info)
			}
		}
		browerInfos.items = temArr
		brower.show(browerInfos)
	}
}