Это побочный эффект использования UIProgressView
с небольшой шириной. Apple, скорее всего, приняла это решение, потому что они хотят дать отчетливо видимую обратную связь с пользователями, что - это некоторый прогресс продолжается, даже если сам вид невелик.
Для обходного пути вы можете создать пользовательский вид прогресса с двумя видами - один для самого бара и один для прогресса. После этого вы можете установить ширину представления прогресса на ширину самой панели, умноженную на процентный прогресс.
Вы можете использовать cornerRadius
property of CALayer
для закругленных краев.
let barWidth: CGFloat = 240
let barHeight: CGFloat = 2
let progress: CGFloat = 0.23
let progressBarView = UIView(frame: CGRect(x: 0, y: 0, width: barWidth, height: barHeight))
progressBarView.backgroundColor = .lightGray
progressBarView.layer.cornerRadius = barHeight/2
progressBarView.clipsToBounds = true
view.addSubview(progressBarView)
let progressView = UIView(frame: CGRect(x: 0, y: 0, width: barWidth * progress, height: barHeight))
progressView.backgroundColor = .blue
progressBarView.addSubview(progressView)
Результат:
![screenshot of the custom progress bar](https://i.stack.imgur.com/ZNkYL.png)
Хм, я просто создал новый UIProgressView и установить свой прогресс до 0,05, и она работала. Затем я установил его в 0.1, а размер выполнения был вдвое меньше 0,05, так что, похоже, он работает здесь. Не могли бы вы опубликовать часть своего кода? – Daven
Спасибо. Ваш комментарий на самом деле просто заставлял меня думать о чем-то. Я устанавливаю высоту прогресса в коде 15, но когда я забираю это, он работает правильно. Интересно, почему это было бы? – puks1978
Если это помогает, я также добавил ограничение на рост progressview и установил его на 15, и он по-прежнему работал как ожидалось – Daven