您的位置:首页 > 产品设计 > UI/UE

点击cell中的图片进行放大浏览

2016-04-21 11:20 423 查看
通常我们在tableView的cell中加载图片后需要点击图片,对图片进行放大浏览,下面我将介绍具体实现方法,代码为swift,在xcode7.1中测试通过。

1.加载一个tableView,并在cell中显示网络上的一张图片。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//图片URL
let imgurl = "http://www.qybike.net/data/attachment/forum/201508/23/215649bigoohqn8oh1p0qh.jpg";
//在cell中的imgview上显示网络上的图片,imgview可自己定义。
cell.imgview.sd_setImageWithURL(NSURL(string: imgurl), placeholderImage: nil) { (img, NSError, SDImageCacheType, url:NSURL!) -> Void in
cell.imgview.image = img;
//添加一个手势
cell.imgview.userInteractionEnabled = true;
let signTap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "imgclick:")
//将对象传递给动作
cell.imgview.addGestureRecognizer(signTap)
signTap.view!.tag = indexPath.row
}

return cell
}


2.点击后的手势处理,这里通过传递的参数获取点击的imageview,实现代码如下:

func imgclick(sender: UITapGestureRecognizer){
//取UIimageview.
let imgview = sender.view as? UIImageView
let url = imgview?.sd_imageURL() //取得图片的URL
print(url)
//绘制一个窗口
let window = UIApplication.sharedApplication().keyWindow
let backgroundView = UIView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.size.width, UIScreen.mainScreen().bounds.size.height))
backgroundView.backgroundColor = UIColor.blackColor()
backgroundView.alpha = 0
//绘制一个Imageview用来显示图片。
let imageView = UIImageView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height))
imageView.image = imgview?.image
imageView.tag = 1
backgroundView.addSubview(imageView)
window?.addSubview(backgroundView)
//添加一个手势,点击图片后隐藏图片。
let hide = UITapGestureRecognizer(target: self, action: "hideImage:")
imageView.userInteractionEnabled = true
imageView.addGestureRecognizer(hide)
UIView.animateWithDuration(0.3, animations:{ () in
let vsize = UIScreen.mainScreen().bounds.size
imageView.frame = CGRect(x:0.0, y: 0.0, width: vsize.width, height: vsize.height)
//保持图片比例
imageView.contentMode = .ScaleAspectFit
backgroundView.alpha = 1
}, completion: {(finished:Bool) in })

}


3.隐藏图片,浏览图片时点击图片后隐藏。

func hideImage(sender: UITapGestureRecognizer){
let backgroundView = sender.view as UIView?
if let view = backgroundView{
UIView.animateWithDuration(0.3,
animations:{ () in
let imageView = view.viewWithTag(1) as! UIImageView
imageView.alpha = 0
},
completion: {(finished:Bool) in
view.alpha = 0
view.superview?.removeFromSuperview()
view.removeFromSuperview()
})
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息