Aucune description

ImageCell.swift 2.5KB

    // // ImageCell.swift // PaiAi // // Created by zhengjianfei on 16/4/9. // Copyright © 2016年 FFIB. All rights reserved. // import UIKit import PaiaiDataKit import PaiaiUIKit final class ImageCell: UICollectionViewCell, UIScrollViewDelegate { @IBOutlet var scrollView: UIScrollView! var photoImage = UIImageView() func setModel(url: String) { photoImage.frame = CGRect.init(x: 0, y: 0, width: width, height: height) photoImage.contentMode = .scaleAspectFit scrollView.contentSize = size scrollView.addSubview(photoImage) // photoImage.image = UIImage.imageWithColor(UIColor.black) if !url.isEmpty { // photoImage.setImageWithNullableURL(url, placeholderImage: UIImage(named: "详情页占位图")) } else { photoImage.image = UIImage(named: url) } let tapGr = UITapGestureRecognizer(target: self, action: #selector(ImageCell.doubleTap(_:))) tapGr.numberOfTapsRequired = 2 scrollView.addGestureRecognizer(tapGr) // printLog(scrollView) } func viewForZooming(in scrollView: UIScrollView) -> UIView? { return photoImage } //MARK zoom @objc func doubleTap(_ gr: UITapGestureRecognizer) { if scrollView.zoomScale > scrollView.minimumZoomScale { scrollView.setZoomScale(scrollView.minimumZoomScale, animated: true) } else { //Zoom to rect let tapPt = gr.location(in: scrollView) // printLog(tapPt) var zoomRect = CGRect.zero zoomRect.size.width = frame.width / scrollView.maximumZoomScale zoomRect.size.height = frame.height / scrollView.maximumZoomScale zoomRect.origin.x = tapPt.x - zoomRect.width / 2 zoomRect.origin.y = tapPt.y - zoomRect.height / 2 if zoomRect.origin.x < 0 { zoomRect.origin.x = 0 } else if zoomRect.maxX > photoImage.frame.maxX { let delta = zoomRect.maxX - photoImage.frame.maxX zoomRect.origin.x -= delta } if zoomRect.origin.y < 0 { zoomRect.origin.y = 0 } else if zoomRect.maxY > photoImage.frame.maxY { let delta = zoomRect.maxY - photoImage.frame.maxY zoomRect.origin.y -= delta } scrollView.zoom(to: zoomRect, animated: true) } } override func prepareForReuse() { super.prepareForReuse() scrollView.zoomScale = 1 } }