2016-06-18 2 views
1

Я не уверен (поскольку я ничего не мог найти), если это то, как работают представления прогресса, но когда у меня есть значение под 0,1, допустим, 0.05, представление прогресса всегда показывает до 0,1, то ничего выше 0.1 работает нормально.Значение UIProgressView под 0,1 не отображается правильно

Это нормально?

+0

Хм, я просто создал новый UIProgressView и установить свой прогресс до 0,05, и она работала. Затем я установил его в 0.1, а размер выполнения был вдвое меньше 0,05, так что, похоже, он работает здесь. Не могли бы вы опубликовать часть своего кода? – Daven

+0

Спасибо. Ваш комментарий на самом деле просто заставлял меня думать о чем-то. Я устанавливаю высоту прогресса в коде 15, но когда я забираю это, он работает правильно. Интересно, почему это было бы? – puks1978

+0

Если это помогает, я также добавил ограничение на рост progressview и установил его на 15, и он по-прежнему работал как ожидалось – Daven

ответ

0

Это побочный эффект использования 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