У меня проблема с UIProgressView (с использованием Xcode 11.5 и текущей версии Swift). Моя цель - создать индикатор выполнения с увеличенной высотой (по сравнению со стандартной высотой Apple) и закругленными углами, которая плавно отображает прогресс воспроизводимого аудиофайла.
предполагаемый стиль индикатора выполнения
Я могу легко добиться желаемого вида, объединив ограничение высоты в конструкторе интерфейса со следующим кодом:
audioProgress.layer.cornerRadius = bubble.frame.size.height / 3
audioProgress.clipsToBounds = true
Однако проблема, с которой я столкнулся, заключается в том, что индикатор выполнения не запускается плавно с самого начала - вместо этого он перескакивает примерно на 1/3 полосы (изменяется в зависимости от размера устройства) и останавливается там, пока звук "не догонит". "в этой позиции, с которой он продолжает плавно работать до конца.
Я убедился, что это не ошибка в моем коде, повторных аудиофайлах, таймере и т. д. c. но некоторые проблемы с макетом. Например, как только я изменю высоту полосы обратно на стандартную высоту Apple, прогресс будет отображаться должным образом.
Я могу избежать этого странного поведения, используя приведенный ниже код для увеличения высоты полосы (вместо ограничения) :
let transform: CGAffineTransform = CGAffineTransform(scaleX: 1.0, y: transformFactor)
audioProgress.transform = transform
Однако это больше не позволяет мне скруглять углы, как показано выше, так как комбинация команд layer.cornerRadius и CGAffineTransform приводит к странно скошенным углам, как показано в других сообщениях. 1017 И как этого избежать?
Если использование команды CGAffineTransform является единственным способом go - есть ли другой способ добиться скругленных углов? Например, по строкам «сначала трансформируйте высоту, и только ЗАТЕМ закругляйте углы» (в отличие от того, чтобы делать это наоборот, что, в моем понимании, вызывает искаженный вид ...)