【发布时间】:2018-02-05 01:36:41
【问题描述】:
我在 CALayer 中有一个图像(使用 CALayers 内容属性)。 CALayer 具有可用于缩放和旋转的变换属性。当 CALayer 静止时,我可以毫无困难地使用该变换。
但是当我尝试拖动 CALayer(使用 mouseDragged:(NSEvent *)theEvent)时,一切都崩溃了(当我拖动时,图像变平了)。
-(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 轴。解决此问题的最佳方法是什么?
【问题讨论】:
-
鼠标拖拽显示代码。
标签: objective-c rotation scale calayer drag