Çekirdek Animasyon sizin CALayer tabanlı sınıfta actionForKey yöntemini uygulayarak özel animasyonlar için izin verir: O zamanlar bir animasyon oluşturmak ve onOrderIn
eylem için iade edebilirsinizÇekirdek Animasyon'da onOrderOut için özel animasyonları nasıl kullanabilirim?
- (id<CAAction>)actionForKey:(NSString *)key {
// Custom animations
return [super actionForKey:key];
}
(yani tabaka başka bir katmana eklendiğinde) . Bu gayet iyi çalışıyor. onOrderOut
için aynısını yaparsam (yani katman süper katmandan çıkarılırsa), döndürülen animasyon göz ardı edilir ve bunun yerine varsayılan animasyon uygulanır. gelmez uzaklaştırmaya,
- (id<CAAction>)actionForKey:(NSString *)key {
if ([key isEqualToString:@"onOrderIn"] || [key isEqualToString:@"onOrderOut"]) {
CABasicAnimation *a = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
a.duration = 0.25;
a.removedOnCompletion = NO;
a.fillMode = kCAFillModeBoth;
if ([key isEqualToString:@"onOrderIn"]) {
a.fromValue = [NSNumber numberWithFloat:0.0];
a.toValue = [NSNumber numberWithFloat:1.0];
} else {
a.fromValue = [NSNumber numberWithFloat:1.0];
a.toValue = [NSNumber numberWithFloat:0.0];
}
return a;
}
return [super actionForKey:key];
}
eser yakınlaştırma:
Amacım dışarı katmanı (onOrderIn
) ve (onOrderOut
) Büyütmek etmektir. Bunun yerine varsayılan olarak sönen animasyon kullanılır.
Başka bir makinede yazarken, bu kod bazı yazım hataları içerebilir.
Herkes yardımcı olabilir mi?
Ah, teşekkürler.Qt Jambi ile yazılımın tamamen farklı bir versiyonunu yazarken, bunu tekrar ihtiyacım olduğunda test edeceğim. ;) – Lemming