Używam CADisplayLink
do wyświetlania animacji, która po prostu interpoluje wartość i przerysowuje sam widok.animuj UIView używając "połączonego" CADisplayLink z CAMediaTimingFunction. (aby uzyskać dowolną krzywą)
np. Mam widok MyView
i ma on właściwość value
, po ustawieniu wartości dzwonię pod numer setNeedsDisplay
, a widok wie, co należy narysować.
do animacji tego używam CADisplayLink
i chcę, aby widok "zmienił" pomiędzy wartościami. Robię to tylko przez interpolację wartości z animacji za start i stop Wartość:
- (CGFloat)interpolatedValue:(CGFloat)sourceValue withValue:(CGFloat)targetValue forProgress:(CGFloat)progress;
teraz coraz postęp liniowy jest łatwe i coraz „specyficznej krzywej” (OK), ale chcę, aby być w stanie podjąć zaleta CAMediaTimingFunction
to zrobić (lub jakaś inna wcześniejsza logika - nie chcę ponownie wymyślać koła ponownie ":)
dlaczego korzystania CADisplayLink? to tylko zegar. A CAMediaTimingFunction jest po prostu zapisem kluczowych argumentów krzywej. sama nie robi krzywej. jeśli wszystko, czego chcesz, to własność niestandardowa uzyskująca pełne wsparcie dla Core Animation, która podobnie jak standardowa animowalna właściwość, powinieneś dziedziczyć CALayer. patrz 'Dodawanie właściwości niestandardowych do warstwy' w dokumencie Xcode. – SolaWing