Вы не можете анимировать более одного государственного изменения в эту же собственность в одном UIView.animateWithDuration
позвонить. Он просто оживит последнее изменение состояния (как в вашем случае). Вместо этого вы можете связать их вместе, используя completionBlock
.
UIView.animateWithDuration(5/3.0, animations: {
self.view.backgroundColor = UIColor.yellowColor()
}, completion:{ finished1 in
UIView.animateWithDuration(5/3.0, animations: {
self.view.backgroundColor = UIColor.blueColor()
}, completion:{finished2 in
UIView.animateWithDuration(5/3.0, animations: {
self.view.backgroundColor = UIColor.purpleColor()
}, completion:{finished3 in
println("COLOR CHANGED")
})
})
})
Или вы можете использовать анимацию ключевого кадра, указав промежуточные кадры, как показано ниже. Значение relativeDuration
должно быть значением от 0 до 1, что указывает на относительную продолжительность одного ключевого кадра. например, если вся анимация равна 3 seconds
, а relativeDuration - (1/3)
, то этот ключевой кадр будет анимироваться для 3/3 = 1
секунд.
relativeStartTime
аналогично относительное время, после которого ключевой кадр начинается с продолжительности всей анимации. например, если вся анимация 3 seconds
и relativeStartTime является (1/3)
, то, что ключевой кадр начинается после 1 second
var duration = 5.0;
var relativeDuration = 1.0/3;
UIView.animateKeyframesWithDuration(duration, delay: 0, options: nil, animations: {
UIView.addKeyframeWithRelativeStartTime(0, relativeDuration: relativeDuration, animations: {
self.view.backgroundColor = UIColor.yellowColor()
})
UIView.addKeyframeWithRelativeStartTime(relativeDuration, relativeDuration: relativeDuration, animations: {
self.view.backgroundColor = UIColor.blueColor()
})
UIView.addKeyframeWithRelativeStartTime(2 * relativeDuration, relativeDuration: relativeDuration, animations: {
self.view.backgroundColor = UIColor.purpleColor()
})
}, completion:nil);
Кстати, этот код не так: '(Bool) в'. Это не вызывает ошибки, но это не делает то, что вы думаете. Просто напишите '_ in'. – matt
И прекратите использовать заглавные буквы для имен функций и имен переменных! Заглавные буквы предназначены для имен классов. – matt