【发布时间】:2013-04-22 22:56:22
【问题描述】:
我有一个 UIBezierPath,我想:
- 移动到 UIView 上的任意坐标
- 变大或变小
我正在根据预定义坐标列表绘制 UIBezierPath。我实现了这段代码:
CGAffineTransform move = CGAffineTransformMakeTranslation(0, 0);
CGAffineTransform moveAndScale = CGAffineTransformScale(move, 1.0f, 1.0f);
[shape applyTransform:moveAndScale];
我也尝试过缩放然后移动形状,似乎没什么区别。
使用此代码:
[shape moveToPoint:CGPointMake(0, 0)];
我开始在 (0, 0) 处绘制形状,但这就是发生的情况。我认为这是因为正在从 0、0 到列表中的下一个点绘制一条线。
当我将移动变换设置为 (0, 0) 时,这就是它绘制的位置。在这里,moveToPoint 设置为列表中的第一个坐标对。如您所见,它不在 0, 0 处。
最后,增加 1.0f 将形状完全移出屏幕,无论我告诉形状移动到哪里。
谁能帮我理解为什么形状没有在 0、0 处绘制,以及为什么在我缩放它时它会移出屏幕。
【问题讨论】:
-
我可能在这个问题上错了,但这段代码 (
CGAffineTransformMakeTranslation(0, 0);) 不是说应该沿 x 轴移动 0 个像素,沿 y 轴移动 0 个像素吗? (reference) 它实际上不会将任何东西移动到 origo (0, 0),因为您似乎正在尝试这样做。此外,您似乎也使用了错误的moveToPoint:.. -
你是对的!考虑到这一点,我改变了数字和它的比例,我现在可以看到它。我如何错误地使用 moveToPoint ?您应该将其发布为答案。
标签: objective-c uibezierpath affinetransform