Изменение преобразования UIImageView - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь иметь функцию в своем приложении, которая изменяет преобразование моих 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, а circleIV - это массив 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
    }
}
...