zdefiniowałem tej funkcji, która zwraca współczynnik pomnożyć trwania animacji z (1 jeśli powolne animacje są wyłączone, współczynnik powolność inaczej):
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;
}
nocie używam float
, a nie CGFloat
jako typu zwrotu funkcji o nazwie UIAnimationDragCoefficient()
. Jest to potrzebne do pracy z symulatorem 64-bitowym.
Następnie można po prostu pomnożyć czas trwania animacji:
CAAnimation animation = [CABasicAnimation animation];
animation.duration = 0.5 * FTSimulatorAnimationDragCoefficient();
Wow. Nie wiedziałem o tym! –
Niestety Apple zepsuł go na iOS 7. –
Christian, nadal działa na iOS 8. Zobacz moje rozwiązanie, które działa również na 64-bitowym. –