В принципе, я хочу создать UIProgressView, чтобы перейти от 0.0 (пустой) до 1.0 (полный) за 3 секунды. Может ли кто-нибудь указать мне в правильном направлении для использования NSTimer в swift с UIProgressView?Создайте UIProgressView, чтобы перейти от 0.0 (пустой) до 1.0 (полный) за 3 секунды
0
A
ответ
0
Я создал свое собственное решение после поиска одного и на этот вопрос.
extension UIProgressView {
func setAnimatedProgress(progress: Float,
duration: NSTimeInterval = 1,
delay: NSTimeInterval = 0,
completion:() ->()
) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)) {
sleep(UInt32(delay))
dispatch_async(dispatch_get_main_queue()) {
self.layer.speed = Float(pow(duration, -1))
self.setProgress(progress, animated: true)
}
sleep(UInt32(duration))
dispatch_async(dispatch_get_main_queue()) {
self.layer.speed = 1
completion()
}
}
}
}
0
Объявите свойства:
var time = 0.0
var timer: NSTimer
инициализировать таймер:
timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector:Selector("setProgress"), userInfo: nil, repeats: true)
Реализовать функцию setProgress:
func setProgress() {
time += 0.1
dispatch_async(dispatch_get_main_queue(), {
progressView.progress = time/3
})
if time >= 3 {
timer.invalidate()
}
}
(я не уверен на 100%, если блок доставки необходимо, чтобы пользовательский интерфейс обновлялся в основном потоке. Не стесняйтесь удалять это, если это не обязательно.)
Я только что дал это, и я получаю всевозможные проблемы: P Я создал новый файл касания какао в быстром для индикатора выполнения типа UIProgressView. Мне сказали, что у класса нет инициализаторов. – dwinnbrown
Я предположил, что представление прогресса уже определено (в раскадровке или в коде). Вы знаете, как это сделать, не так ли? – Glorfindel
Что вы подразумеваете под определением. Я новичок в кодировании и могу создавать приложения, но пока еще не знаю правильной терминологии: P Будет ли это определять выход? – dwinnbrown