UWAGA: Jest to aplikacja typu Cocoa na OS X, NIE iOS.Animacja rdzenia: ustaw anchorPoint na 10.8, aby obrócić warstwę wokół jej środka.
Mam NSButton z warstwą (podklasa NSView). To, co chcę zrobić, to obrócić ten przycisk za pomocą Core Animation. Używam następujący kod to zrobić:
CABasicAnimation *a = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
a.fromValue = [NSNumber numberWithFloat:0];
a.toValue = [NSNumber numberWithFloat:-M_PI*2];
[_refreshButton.layer setAnchorPoint:CGPointMake(0.5, 0.5)];
a.duration = 1.8; // seconds
a.repeatCount = HUGE_VAL;
[_refreshButton.layer addAnimation:a forKey:nil];
To działa, poza tym, że po uruchomieniu, warstwa skacze w dół iw lewo, tak, że jego punkt środkowy jest w miejscu pochodzenia, który NSView to lewy dolny róg na (0,0). Następnie warstwa obraca się wokół jej środka, ale oczywiście skok do dolnego lewego rogu nie jest akceptowalny.
Więc, po wielu czytania, znalazłem ten wiersz w 10,8 API informacjach o wydaniu:
On 10.8, AppKit will control the following properties on a CALayer
(both when "layer-hosted" or "layer-backed"): geometryFlipped, bounds,
frame (implied), position, anchorPoint, transform, shadow*, hidden,
filters, and compositingFilter. Use the appropriate NSView cover methods
to change these properties.
oznacza to, że zestaw klas AppKit jest „ignorowanie” moje wezwanie do -setAnchorPoint w powyższym kodzie, a zamiast tego jest ustawienie punktu zakotwiczenia na pochodzenie NSView (0,0).
Moje pytanie brzmi: jak rozwiązać ten problem? Co to jest "odpowiednia metoda okładki NSView", aby ustawić anchorPoint dla warstwy (nie mogę znaleźć takiej metody na NSView). Pod koniec dnia, chcę tylko, aby mój przycisk obrócił się wokół punktu centralnego, w nieskończoność.
Perfect! Wiesz; Widziałem właściwość position, ale jej nie wypróbowałem, ponieważ przeczytałem notatkę powyżej, która mówi, że AppKit zamierza to kontrolować. Dzięki za rozwiązanie! – Bryan
Czy wiesz, dlaczego obrót M_PI/2 obróciłby się przeciwnie do ruchu wskazówek zegara za pierwszym razem i zgodnie z ruchem wskazówek zegara? – greg
Będę musiał zobaczyć twój kod. Powinieneś zamieścić własne pytanie. –