Arka plan degradelerimi kontrol eden anahtar ifadem var. Güzel çalışır (degradeler değişir), ancak aniden değişir. Bu gradyanların birbiri ile .25'lik bir sürede solmasını istiyorum. Bu benim kod girişimi aşağıda. arka kontrolleriSwift - Solmaya devam etmek için animateWithDuration öğesini kullanma CAGradientLayer
Anahtarı ifadesi: Ben
extension UIView {
private func prepareGradient() -> CAGradientLayer {
let gradientLayer = CAGradientLayer()
gradientLayer.frame = self.bounds
gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
gradientLayer.endPoint = CGPoint(x: 1.0, y: 1.0)
gradientLayer.zPosition = -1
self.layer.addSublayer(gradientLayer)
return gradientLayer
}
func configureGradient(colors:[CGColor]) {
let gradientLayer = prepareGradient()
UIView.animateWithDuration(0.25, delay: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: {
gradientLayer.colors = colors
}, completion: nil)
}
}
nasıl ayarlayabilirsiniz hareketlendirmek süresini teşebbüs nerede geçişlerini kontrol eden
switch backgroundInput{
case 50...69:
self.view.configureGradient([gradientColor1, gradientColor2])
case 70...90:
self.view.configureGradient([gradientColor2, gradientColor3])
case 91...110:
self.view.configureGradient([gradientColor3, gradientColor4])
case 111...130:
self.view.configureGradient([gradientColor4, gradientColor5])
case 131...150:
self.view.configureGradient([gradientColor5, gradientColor6])
case 151...170:
self.view.configureGradient([gradientColor6, gradientColor7])
default:
self.view.configureGradient([lightPurple, lightBlue])
}
Uzantısı Bu benim gradyan katmanlarını birinden diğerine taramak için yukarıdaki kodu? (Ilgisiz - sürekli alt katmanlar üzerinde "alt katman eklemek" için bellek için kötü mü?)
Evet, sürekli olarak daha fazla alt tabaka eklemek kötüdür. Bir degrade katman oluşturmalı ve ardından degradeyi güncellemek için özelliklerini değiştirmelisiniz. Bu sorunu düzeltin ve hala sorun yaşıyorsanız yeni kodu kullanarak sorunuzu geri alın ve güncelleyin. –
@robmayoff - Yikes. Buna çok memnun oldum! Buradaki düzeltme, configureGradient işlevinden self.layer.addSublayer (gradientLayer) öğesini kaldırmak ve bunu readyGradient'e taşımak kadar basit midir? (Yukarıdaki kodumu düzenledim.) – Joe