Facebook图片变焦动画在swift,图片没有显示初始位置

时间:2017-12-02 11:01:40

标签: swift swift3 uicollectionview uicollectionviewcell

当您将图片单击进入单元格以移动到屏幕中间时,我一直在尝试制作像Facebook这样的缩放动画。动画是有效的,但由于我无法弄清楚的原因,它不是从初始位置开始它给我另一帧。请帮助,我已经在这几天挣扎了。

我正在使用带有CustomCell的collectionView以及它以编程方式完成的所有内容:

CenterVC中的功能:

var centerVC : CenterVC?

func animate() {

    centerVC?.animateImageView(statusImageView: pictureView)
}

let pictureView : UIImageView = {
    let imageView = UIImageView()
    imageView.contentMode = .scaleAspectFill
    imageView.image = UIImage(named: "cat")
    imageView.backgroundColor = UIColor.clear
    imageView.layer.masksToBounds = true
    imageView.isUserInteractionEnabled = true
    imageView.translatesAutoresizingMaskIntoConstraints = false
    return imageView
}()

addConstraintsWithFormat(format: "V:|-5-[v0(40)]-5-[v1]-5-[v2(200)]", views: profileImage, postTextView, pictureView)
    addConstraintsWithFormat(format: "H:|[v0]|", views: pictureView)

这是单元格内的pictureView和约束(这是我为视图设置图片的位置,我在cellForRowAtIndexPath中使用cell.centerVC = self):

    Starting frame is: (5.0, 547.5, 365.0, 200.0)
    Image view frame is: (0.0, 195.5, 365.0, 200.0)

这是它在调试器中输出的内容:

{{1}}

正如您可以看到起始帧,它与图片的初始帧和位置不同。动画它没有离开初始位置它只是出现在顶部的某个地方并且动画到中间。我不知道该怎么做,请指教。

1 个答案:

答案 0 :(得分:0)

出于某种原因,它没有读取起始帧rect,所以我做了一个新的CGRect来获取原点并设置图片的大小:(它现在完美地动画)

zoomImageView.frame = CGRect(origin: startingFrame.origin, size: CGSize(width: view.frame.width, height: statusImageView.frame.height))