|
//
// 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 weak var scrollView: UIScrollView!
var photoImage = UIImageView()
func setModel(url: String) {
photoImage.frame = CGRect(x: 0, y: 0, width: width, height: height)
photoImage.contentMode = .scaleAspectFit
scrollView.contentSize = size
scrollView.addSubview(photoImage)
photoImage.setImage(url, placeholder: UIImage.photoPlaceholder)
let tapGr = UITapGestureRecognizer(target: self, action: #selector(ImageCell.doubleTap(_:)))
tapGr.numberOfTapsRequired = 2
scrollView.addGestureRecognizer(tapGr)
}
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)
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
}
}
|