Znalazłem to interesujące, więc dałem mu szansę. Możliwym rozwiązaniem jest zbudowanie drugiego przejrzystego widoku pod widokiem głównym, dając mu (widok od dołu) cień, korzystając ze ścieżki oryginalnego widoku. Następnie możesz zastosować animację do obu widoków. Zrobiłem to z prostymi widokami prostokątnymi, ale nie widzę powodu, dla którego nie można tego zrobić przy bardziej złożonych ścieżkach lub przy użyciu 2 CALayerów zamiast 2 UIViews.
ten sposób skonfigurować moje poglądy ...
testView = [[UIView alloc] initWithFrame:CGRectMake(40, 40, 100, 100)];
testView.backgroundColor = [UIColor redColor];
//increase y origin of second view to simulate shadow offset
testViewShadow = [[UIView alloc] initWithFrame:CGRectMake(40, 50, 100, 100)];
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddRect(path, NULL, CGRectMake(0, 0, testView.frame.size.width, testView.frame.size.height));
testViewShadow.layer.shadowPath = path;
testViewShadow.layer.shadowOpacity = 1.0;
testViewShadow.layer.shadowOffset = CGSizeMake(0, 0);
testViewShadow.layer.shadowRadius = 10.0;
CFRelease(path);
[self.view addSubview:testViewShadow];
[self.view addSubview:testView];
..i moja animacja (wystarczy podłączyć swój CAAnimation do przycisku jako IBAction i stosowane zarówno widoki) ...
- (IBAction)rotate:(id)sender{
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0];
rotationAnimation.duration = 5.0;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = 1.0;
rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
[testView.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
[testViewShadow.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
}
to właśnie wynik wygląda ...


Wszelkie transformacje (2D) powinny wyglądać wiarygodnie, jeśli zastosujesz je do obu widoków.
Nadzieję, że pomaga!
Byłoby świetnie, gdybyś mógł to zaakceptować, gdyby pomógł. – mjisrawi
+1, dobra odpowiedź. – occulus