如何将UIScrollView和UIImageView添加到CollectionViewCell(并在UIImageView中缩放图像)

时间:2019-02-06 04:11:59

标签: ios swift xcode uicollectionview uicollectionviewcell

我想重新创建iOS Gallery App,所以我有两个视图控制器,第一个显示所有可用的图像,当选择一个图像时,然后显示另一个视图控制器中的另一个集合视图,制作了第二个vc集合视图的视图,其中每个单独的单元格全屏显示,因此您可以在所有可用图像之间滑动(就像在iOS Gallery App中一样)。问题是我无法将缩放添加到特定点每个单独单元格中显示的ImageView的大小。缩放时,图像仅缩放到中心,因此无法“浏览”图像或放大图像视图的特定部分(例如,缩放图像的左角)。 iOS Gallery应用

class CollectionViewCell: UICollectionViewCell, UIScrollViewDelegate {

@IBOutlet weak var userImageView: UIImageView!

override func awakeFromNib() {
    super.awakeFromNib()
    returnOriginalSize()
    let pinch = UIPinchGestureRecognizer(target: self, action: #selector(self.pinch(sender:)))
    userImageView.addGestureRecognizer(pinch)

    let tap = UITapGestureRecognizer(target: self, action: #selector(doubleTapped))
    tap.numberOfTapsRequired = 2
    userImageView.addGestureRecognizer(tap)
}




// Actions
@objc func pinch(sender:UIPinchGestureRecognizer) {
    if sender.state == .began || sender.state == .changed {


        let currentScale = self.userImageView.frame.size.width / self.userImageView.bounds.size.width
        let newScale = currentScale * sender.scale
        let transform = CGAffineTransform(scaleX: newScale, y: newScale)
        print("New scale is \(newScale)")

        guard newScale >= 0.80 else {
            UIView.animate(withDuration: 0.3) {
                self.userImageView.transform = CGAffineTransform.identity
            }
            return
        }
        self.userImageView.transform = transform
        sender.scale = 1
    }
}

@objc func doubleTapped(sender:UITapGestureRecognizer) {
    print("Double Tapped")
    UIView.animate(withDuration: 0.3) {
        self.userImageView.transform = CGAffineTransform.identity
    }

}

func returnOriginalSize(){
    self.userImageView.transform = CGAffineTransform.identity
}

}

每个单元格覆盖整个屏幕,因此,当用户在第一个vc中点击图像时,第二个vc会完整显示该图像。该图像链接到处理所有缩放和平移功能的自定义单元格类。但是,当我缩放时,它只缩放到图像的中心,我希望它能够缩放到图像视图的任何部分,并且用户希望可以“导航”图像视图,就像在iOS画廊中一样应用

我的项目可以在以下链接中找到 https://github.com/francisc112/Gallery-Test

预先感谢

0 个答案:

没有答案