Ios 更改UIImageView的变换

Ios 更改UIImageView的变换,ios,swift,uiimageview,transform,Ios,Swift,Uiimageview,Transform,我正在尝试在我的应用程序中设置一个功能,当我点击视图时,该功能可以更改我的UIImageView(它们的位置和比例)的变换。每个图像应移动到其他图像的相同位置,以提供滚动效果。例如,如果我有图像“a”、“b”和“c”,则图像“a”应变换为“b”的位置和比例,图像“b”应变换为“c”的位置和比例,最后图像“c”应变换为“a”的位置和比例 我已经设法让它在第一次点击时按预期工作。但之后的每一个水龙头都会失去位置和比例 代码如下: @objc private func tapHandler(){

我正在尝试在我的应用程序中设置一个功能,当我点击视图时,该功能可以更改我的
UIImageView
(它们的位置和比例)的变换。每个图像应移动到其他图像的相同位置,以提供滚动效果。例如,如果我有图像“a”、“b”和“c”,则图像“a”应变换为“b”的位置和比例,图像“b”应变换为“c”的位置和比例,最后图像“c”应变换为“a”的位置和比例

我已经设法让它在第一次点击时按预期工作。但之后的每一个水龙头都会失去位置和比例

代码如下:

@objc private func tapHandler(){

    for index in 0...2{
        var transform = CGAffineTransform()

        if (circlesIV[index].tag==0){
            transform = transforms[0].translatedBy(x: +100.0, y: 0.0)
            transform = transform.scaledBy(x: 0.5, y: 0.5)
        }
        else if (circlesIV[index].tag==1){
            transform = transforms[1].translatedBy(x: -200.0, y: 0.0)
        }
        else {
            transform = transforms[2].translatedBy(x: +100.0, y: 0.0)
            transform = transform.scaledBy(x: 2, y: 2)
        }
        circlesIV[index].transform = transform
    }

    var tempTag = circlesIV[0].tag
    circlesIV[0].tag = circlesIV[1].tag
    circlesIV[1].tag = circlesIV[2].tag
    circlesIV[2].tag = tempTag 
}
transforms是一个包含
UIImageView
原始变换的数组,circlesIV是
UIImageView
的数组(共有3个图像)

编辑:我认为问题与用于设置图像的自动约束有关

circlesIV[0].centerXAnchor.constraint(equalTo: topHalf.centerXAnchor).isActive = true
circlesIV[1].centerXAnchor.constraint(equalTo: topHalf.centerXAnchor, constant: +100).isActive = true
circlesIV[2].centerXAnchor.constraint(equalTo: topHalf.centerXAnchor, constant: -100).isActive = true

for index in 0...2{
    circlesIV[index].translatesAutoresizingMaskIntoConstraints = false
    circlesIV[index].centerYAnchor.constraint(equalTo: topHalf.centerYAnchor).isActive = true
    if(index==0){
        circlesIV[index].widthAnchor.constraint(equalToConstant: 150).isActive = true
        circlesIV[index].heightAnchor.constraint(equalToConstant: 150).isActive = true
    } else {
        circlesIV[index].widthAnchor.constraint(equalToConstant: 75).isActive = true
        circlesIV[index].heightAnchor.constraint(equalToConstant: 75).isActive = true
    }
}

变换
数组的意义是什么?图像视图的“原始变换”是否与标识不同?我想我已经解决了问题,但不确定如何解决。我使用自动约束设置图像变换。我将把这部分代码添加到这个部分。你不认为使用纯自动布局比转换更好吗?现在你正在使用这两种方法。我的想法是,我正在尝试设置图像的动画,以改变轻触手势的位置。我只是使用autolayout来放置图像,然后我想能够在点击时改变它们的位置和比例。那么在第二次和第三次点击时会发生什么呢?通过查看您的代码,第二次点击将被翻译200,第三次点击将被翻译300。。。