Ich habe ein Bild in einem CALayer (mit der CALayers contents -Eigenschaft). Ein CALayer verfügt über eine Transformationseigenschaft, die zum Skalieren und Drehen verwendet werden kann. Ich kann diese Transformation ohne Schwierigkeit verwenden, wenn der CALayer still ist.Wie wird ein CALayer gezogen und gedreht?
Aber wenn ich versuche, den CALayer zu ziehen (mit mouseDragged: (NSEvent *) theEvent), dann alles fällt auseinander (das Bild wird flacher, wenn ich ziehe).
-(void)mouseDragged:(NSEvent *)theEvent {
CGPoint loc = [self convertPoint:theEvent.locationInWindow fromView:nil];
CGPoint deltaLoc = ccpSub(loc, downLoc); // subtract two points
CGPoint newPos = ccpAdd(startPos, deltaLoc); // adds two points
[layer changePosition:newPos];
...
}
In der Schicht
-(void)changePosition:(CGPoint)newPos {
//prevent unintended animation actions
self.actions = @{@"position": [NSNull null]};
CGSize size = self.frame.size;
CGRect newRect = CGRectMake(newPos.x, newPos.y, size.width, size.height);
self.frame = newRect;
}
Das Problem ist, dass ich CALayer-Rahmen, um dynamisch zu ändern, um die Position des CALayer verwenden, wie I ziehen, aber wenn der Drehwinkel nicht Null ist, dann ist der Rahmen nicht mehr parallel zur x- und y-Achse. Was ist der beste Weg, um dieses Problem zu beheben?
zeigen Sie den Code in mousedragged. – GeneCode