2015-06-08 2 views
-2

Я скопировал 5 файлов изображений в свой проект, отнес их к классу UIImage из строк (не включенных ниже), создал для них array и попытался выполнить цикл array, когда я нажимаю кнопку updateIMAGE, чтобы по существу создать немного анимация. Файл в UIImageView - frame1, но когда я пытаюсь нажать кнопку в симуляторе, он направляется прямо к frame5.для анимации цикла не работает правильно?

var imageArray: [UIImage] = [frame1, frame2, frame3, frame4, frame5] 

@IBOutlet var imageView: UIImageView! 

@IBAction func updateIMAGE(sender: AnyObject) { 
    for image in 0..<imageArray.count { 
     var im = imageArray[image] 
     imageView.image = im 
     println(im) 
    } 
} 
+1

, что вы имеете в виду с «его петли прямо к раме5 "? Не печатает ли другие изображения/строки? Конечно, будет установлено только пятое изображение! – luk2302

+0

Что вы ожидаете? – rdelmar

+2

Вы не должны ожидать, что пользовательский интерфейс будет обновляться на каждой итерации цикла. Пользовательский интерфейс обновляется только после того, как весь ваш код запущен, и управление передается обратно в систему. – johnpatrickmorgan

ответ

3

Вы можете перебирать массив и добавить UIImage в массив и вне цикла назначить этот массив свойству animationImages из UIImageView, установить продолжительность и запустить анимацию:

var array: NSMutableArray = []() 
for image in 0..<imageArray.count { 
    { 
     array.addObject(imageArray[image]) 
    } 

    imageView.animationImages = array; 
    imageView.animationDuration = 1.5 
    imageView.startAnimating() 
1

Чтобы быть гораздо более эффективным, IOS будет совмещать несколько операций рисования в одну операцию, что 99,99% времени, что разработчики и их клиенты хотят. Если вам нужна анимация, вам придется написать код, который выполняет анимацию.

PS. Вы можете выполнять итерацию непосредственно через массив, вам не нужна переменная индекса.

+0

спасибо, что узнал! –

Смежные вопросы