Проблемы SWIFT с CGAffineTransform ... кнопка всегда go в начало координат - PullRequest
0 голосов
/ 22 марта 2020

У меня проблема с анимацией из CGAffineTransform ... Я хочу переместить кнопку и одновременно увеличить ее.

Но если я сделаю одну анимацию в одиночку, все будет работать довольно просто. Он увеличивает или перемещает кнопку на 50 пикселей.

Но если я вставлю обе анимации в одну и ту же анимацию, это испортится. Кнопка начинает двигаться далеко за пределами экрана и не масштабируется, как следует.

Также после перемещения кнопки. Кнопки масштабируются до правильного размера, который я ожидал, но возвращаются в исходное положение до ...

Что мне здесь не хватает?

    let shape = CAShapeLayer()
    //shape.path = UIBezierPath(arcCenter: CGPoint(x: 25, y: 25), radius: 30, startAngle: 0, endAngle: .pi/2, clockwise: true).cgPath
    shape.lineWidth = 5
    shape.strokeColor = UIColor.black.cgColor
    timerButton.layer.addSublayer(shape)
    UIView.animate(withDuration: 2, animations: {
        self.timerButton.transform = CGAffineTransform(translationX: -50, y: 0)
        //self.timerButton.transform = CGAffineTransform(scaleX: 3, y: 3)
    }) { (true) in
        UIView.animate(withDuration: 1, animations: {
            self.timerButton.transform = CGAffineTransform(scaleX: 3, y: 3)
        }) { (true) in
            print("later")
        }
    }

1 Ответ

0 голосов
/ 22 марта 2020

По завершении преобразования положения x вам нужно изменить ограничение, чтобы сделать его постоянным, верхнее ограничение, после чего также в завершении необходимо удалить преобразование положения x,

Если вы выполняете эти шаги и после них оживляете ваше новое преобразование, оно должно работать

...