Podczas nauki Core Animation bardzo szybko nauczyłem się, że jeśli nie zrobisz tego dobrze, uzyskasz naprawdę dziwne niezdefiniowane zachowanie. W tym celu mam kilka pytań, które pomogą mi lepiej zrozumieć to koncepcyjnie.
Moja podklasa NSView deklaruje następujące elementy init. Ten widok jest widokiem podrzędnym normalnego widoku opartego na warstwie.
[self setLayer:[CALayer layer]]; [self setWantsLayer:NO];
Po tym, kiedy iw jakich sytuacjach powinienem odnosić się do siebie, a nie do [warstwy siebie]? Manipulowałem TYLKO warstwą za pomocą wyraźnych i niejawnych animacji, trzymając się z dala od [self setFrame:] itp. i używając [[self layer] setPosition] itp.
Problem z tym podejściem polega na tym, że rzeczywista klatka widoku pozostaje w jednym miejscu przez wszystkie zastosowane animacje. Co jeśli mój widok ma odbierać zdarzenia myszy? Na przykład mam widok, który wykorzystuje animację rdzenia i jest przeciągany myszą. Czy istnieje sposób, aby w jakiś sposób zsynchronizować ramkę widoku z bieżącym stanem warstwy prezentacji, aby móc odbierać odpowiednie zdarzenia myszy?
Jeśli chodzi o warstwę prezentacji, najwyraźniej jest ona dostępna tylko wtedy, gdy trwa animacja. Czy istnieje jakaś właściwość warstwy, która może mi powiedzieć, gdzie jest ona WŁAŚCIWIE wizualnie, nawet gdy animacja nie jest w toku?