2015-07-15 7 views
0

В принципе, я хочу создать UIProgressView, чтобы перейти от 0.0 (пустой) до 1.0 (полный) за 3 секунды. Может ли кто-нибудь указать мне в правильном направлении для использования NSTimer в swift с UIProgressView?Создайте UIProgressView, чтобы перейти от 0.0 (пустой) до 1.0 (полный) за 3 секунды

ответ

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%, если блок доставки необходимо, чтобы пользовательский интерфейс обновлялся в основном потоке. Не стесняйтесь удалять это, если это не обязательно.)

+0

Я только что дал это, и я получаю всевозможные проблемы: P Я создал новый файл касания какао в быстром для индикатора выполнения типа UIProgressView. Мне сказали, что у класса нет инициализаторов. – dwinnbrown

+0

Я предположил, что представление прогресса уже определено (в раскадровке или в коде). Вы знаете, как это сделать, не так ли? – Glorfindel

+0

Что вы подразумеваете под определением. Я новичок в кодировании и могу создавать приложения, но пока еще не знаю правильной терминологии: P Будет ли это определять выход? – dwinnbrown