0
我在CALayer中有一個圖像(使用CALayers內容屬性)。 CALayer具有可用於縮放和旋轉的transform屬性。當CALayer仍然存在時,我可以毫無困難地使用這種轉換。但是,當我嘗試拖動CALayer(使用mouseDragged:(NSEvent *)theEvent),然後它全部崩潰(當我拖動時圖像變平坦)。如何拖動旋轉和縮放的CALayer?
-(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];
...
}
在層
-(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;
}
的問題是,我使用的CALayer的幀動態地改變的CALayer的位置,因爲我拖動,但是當旋轉角度不爲零,則該幀是不再平行於x和y軸。解決這個問題的最好方法是什麼?
顯示mousedragged中的代碼。 – GeneCode