Преобразование прямоугольного пути в округленный прямоугольный путь - это очень сложная операция, если вы делаете это с помощью общего способа, такого как Core Animation. Вам лучше использовать свойство cornerRadius
для CALayer
, которое является анимируемым.
Вот рабочий пример с анимацией на основе ограничений:
class ViewController: UIViewController {
@IBOutlet var constraints: [NSLayoutConstraint]!
@IBOutlet var contentView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
self.contentView.layer.cornerRadius = 10.0
self.animate(nil)
}
@IBAction func animate(_ sender: Any?) {
for c in constraints {
c.constant = 40.0
}
UIView.animate(withDuration: 4.0) {
self.view.layoutIfNeeded()
self.contentView.layer.cornerRadius = 40.0
}
}
}
contentView
указывает на внутренний вид, который должен быть анимирован, а constraints
относится к четырем ограничениям макета, определяющим расстояния отпредставление контроллера представления к представлению содержимого.
Это просто грубый пример, который, безусловно, можно улучшить.