Вы можете использовать CGAffineTransform(translationX: y:)
для достижения чего-то подобного:
UIView.animate(withDuration: 1.0, delay: 0.0, options: .curveEaseInOut, animations: {
self.breathingStatusLabel.transform = CGAffineTransform(translationX: self.breathingStatusLabel.bounds.origin.x + 300, y: self.breathingStatusLabel.bounds.origin.y)
}, completion: nil)
Чтобы переместить его обратно в исходное место, добавьте это в другой блок анимации:
self.breathingStatusLabel.transform = .identity
Примечание: CGAffineTransform(translationX: y:)
переводит представление в указанное место, но не меняет его рамки.Поэтому будьте осторожны при использовании этого, чтобы просто анимировать ярлыки, которые вы можете использовать.
Но, например, вы хотите переместить UITextFields
, когда появится клавиатура, вы должны изменить ограничения, если она autolayout
, или изменить ее рамку.Если вы используете CGAffineTransform(translationX: y:)
, вы заметите, что он будет перемещать UITextField
, но когда вы нажмете на него, ничего не будет работать, потому что его кадр не изменился, изменилось только местоположение.