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