Animieren UIImageView mit Maske (Kern-Animationen mit Masken)
Habe ich ein UIImage in UIImageView (Objekt auf das Bild). Muss es animiert werden, auf der rechten Seite, aber diese animation muss maskiert werden mit diesem Kreis-Maske.
Mein aktuelle code:
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddArc(path, NULL, 44, 44, 21, 0, 2 * M_PI, NO);
CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];
[shapeLayer setPath:path];
[shapeLayer setFillColor:[[UIColor blackColor] CGColor]];
[shapeLayer setBounds:CGRectMake(0, 0, 44, 44)];
[shapeLayer setPosition:CGPointMake(0, 0)];
UIImageView *loadingShape = [[UIImageView alloc] initWithFrame:CGRectMake(6.5, 7.5, 89, 40)];
[loadingShape setImage:[UIImage imageNamed:@"object_image.png"]];
[self addSubview:loadingShape];
//Set the mask for the image view's layer
[[loadingShape layer] setMask:shapeLayer];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationCurve: UIViewAnimationCurveEaseOut];
[UIView setAnimationDuration:0.3];
[UIView setAnimationRepeatCount:10];
[loadingShape setFrame:CGRectMake(0, 7.5, 89, 40)];
[UIView commitAnimations];
Aber das belebt mein ganzes UIImageView maskiert. Ich brauche Maske zu statisch, nur Objekt hinter animiert werden.
Was ist die beste Lösung, um dieses?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Ebenenmaske
shapeLayer
wirkt, als sei es ein Kind von der anderen Ebene[loadingShape layer]
. Wenn die übergeordnete Ebene sich bewegt, das Kind bewegt sich mit ihm.Zusätzlich zu Ihrer aktuellen animation, Sie haben zu animieren
shapeLayer
, in die entgegengesetzte Richtung.Edit: Die animation gegründet von
-[UIView beginAnimations:context:]
macht gelten nicht automatisch für bareCALayer
, so die animation manuell.shapeLayer
's position. Das ist wirklich alles dort ist zu ihm.UIView
animation Parameter automatisch für den CALayer. Tun Sie das nicht. Ich habe einige code, um die Antwort.Dank Kurt, ich verfeinert, ein wenig meine code und bekam, was ich wanter 🙂
position
aber das esfromValue
undtoValue
dieCGRect
s. Sollten Sie auch nichtCGPoints
?