ho definito questa funzione che restituisce il fattore di moltiplicare le durate di animazione con (1 se le animazioni lente sono disabilitate, il fattore lentezza altrimenti):
CGFloat FTSimulatorAnimationDragCoefficient(void) {
static float (*UIAnimationDragCoefficient)(void) = NULL;
#if TARGET_IPHONE_SIMULATOR
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
UIAnimationDragCoefficient = (float (*)(void))dlsym(RTLD_DEFAULT, "UIAnimationDragCoefficient");
});
#endif
return UIAnimationDragCoefficient ? UIAnimationDragCoefficient() : 1.f;
}
Nota che io uso float
, non CGFloat
come tipo di ritorno della funzione chiamata UIAnimationDragCoefficient()
. Questo è necessario per lavorare con il simulatore a 64 bit.
allora posso semplicemente moltiplicare la durata dell'animazione:
CAAnimation animation = [CABasicAnimation animation];
animation.duration = 0.5 * FTSimulatorAnimationDragCoefficient();
fonte
2015-05-19 10:51:41
Wow. Non sapevo di quello! –
Sfortunatamente Apple l'ha rotto in iOS 7. –
Christian, funziona ancora su iOS 8. Vedi la mia soluzione che funziona anche su 64 bit. –