У меня есть этот проект SwiftySwitch.Как сделать UIView расти в UIView.animate() с точным радиусом угла?
Моя цель состоит в том, чтобы круг расширялся и уменьшал сохранение формы круга вместо того, чтобы иметь радиус угла, который больше, чем текущая высота круга в каждый конкретный момент анимации.
Эта обработка круга растущего код здесь:
func turnOn() {
let tempView = UIView(frame: CGRect(x: ballDiameter/2, y: ballDiameter/2, width: 0, height: 0))
tempView.backgroundColor = onColor
tempView.layer.cornerRadius = ballDiameter/2
self.addSubview(tempView)
UIView.animate(withDuration: dotTravelTime, animations: { [weak self] in
//RIGHT HERE is the code for the circle to hold it's circular form
if self != nil {
tempView.frame = CGRect(x: 0, y: 0, width: self!.ballDiameter, height: self!.ballDiameter)
tempView.layer.cornerRadius = self!.ballDiameter/2
}
self?.layoutIfNeeded()
}) { [weak self] _ in
self?.backgroundColor = self!.onColor
tempView.removeFromSuperview()
}
}
func turnOff() {
let tempView = UIView(frame: CGRect(x: 0, y: 0, width: ballDiameter, height: ballDiameter))
tempView.backgroundColor = onColor
self.addSubview(tempView)
self.backgroundColor = offColor
UIView.animate(withDuration: dotTravelTime, animations: { [weak self] in
//RIGHT HERE is the code for the circle to hold it's circular form
if self != nil {
tempView.frame = CGRect(x: self!.ballDiameter/2, y: self!.ballDiameter/2, width: 0, height: 0)
tempView.layer.cornerRadius = self!.ballDiameter/2
}
self?.layoutIfNeeded()
}) { _ in
tempView.removeFromSuperview()
}
}
Где я говорю прямо здесь это место, где я обрабатывать круг анимацию. Я использую временный UIView для обработки анимации, а затем удаляю представление после изменения цвета фактического представления позади него. TempView - это переключатель окружности, который вы видите с помощью скользящей анимации. Если вам нужна информация о моем дизайне, дайте мне знать. Я пробовал много вещей, и все было разрешено, когда круг был квадратом или имел чуть больший угловой радиус, чем я хотел. (Я думаю, что это сужая радиус закругления некоторые из оригинального размера, но это второстепенно.
Вы пробовали автомат вместо изменения размера рамки? – dfd
Автонастройка будет еще хуже. Проверьте комментарии ниже для правильных ответов @dfd – Sethmr
@Matt очень хорошо. Рад, что он дал вам хороший ответ. – dfd