在动画时将UITableViewCell子UIImageView带到前面

时间:2016-10-06 06:43:35

标签: ios swift uitableview uiimageview

我有一个UITableViewCell。 在这个tableviewcell中,我有一个UIImageView。

我想在按下图像时将CGAffineTransform应用于UIImageView。

问题:单元格的其他项目位于我的图像之上,我希望它们在动画发生时位于后面。

我尝试过这样的事情:

//In the UITableViewCell

override func didMoveToWindow() {
    super.didMoveToWindow()

    superview?.superview?.bringSubview(toFront: photoView)
  }

但这不起作用。

我也尝试过:

photoView.layer.zLocation = 10

但这也不起作用。

对于那些想知道的人,转换代码如下:

let scaleTransform = CGAffineTransform(scaleX: scale, y: scale)
photoView.transform = scaleTransform

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果我没有误会,这就是你想要的:

“当我按下图像” - 在其他单元格的子视图顶部时,我希望将CGAffineTransform应用于UIImageView-意味着您应该为imageView设置UITapGestureRecognizer

您的UITableViewCell应该类似于:

// your custom cell, in my case I'm calling it "TableViewCell"
class TableViewCell: UITableViewCell {
    @IBOutlet weak var imgView: UIImageView!
    // your other IBOutlets...

    //...

    // this flag is useful when you want to check if the imageView is tapped, you should return it to its normal transform -for example-
    private var isImageViewMovedToFront = false

    override func didMoveToWindow() {

        // adding the tap gesture
        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(TableViewCell.imgViewTapped))
        imgView.isUserInteractionEnabled = true
        imgView.addGestureRecognizer(tapGesture)

    }

    func imgViewTapped() {
        if isImageViewMovedToFront == false {
            isImageViewMovedToFront = true

            contentView.bringSubview(toFront: imgView)
            UIView.animate(withDuration: 0.25) {
                let scaleTransform = CGAffineTransform(scaleX: 1.2, y: 1.2)
                self.imgView.transform = scaleTransform
            }
        } else {
            isImageViewMovedToFront = false

            contentView.sendSubview(toBack: imgView)
            UIView.animate(withDuration: 0.25) {
                let scaleTransform = CGAffineTransform(scaleX: 1.0, y: 1.0)
                self.imgView.transform = scaleTransform
            }
        }

    }
}

输出应如下所示:

  • 首次发布:

enter image description here

  • 敲击牢房:

enter image description here

  • 重视:

enter image description here

希望有所帮助。