我有一个UIView子类,以这种方式在drawRect中绘制一些东西:
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(contextRef, 0.2, 1, 0.2, 0.8);
CGContextFillEllipseInRect(contextRef, CGRectMake(24, 24, 4, 4));
CGContextFillEllipseInRect(contextRef, CGRectMake(49, 10, 4, 4));
CGContextFillEllipseInRect(contextRef, CGRectMake(73, 24, 4, 4));
我希望能够移动那些绘制的点(特别是旋转它)。我怎么能这样做,drawRect绘制在哪里?
谢谢!
答案 0 :(得分:2)
如果我理解正确,你想要做的是移动(顺时针或逆时针旋转)你正在绘制的点,对吗?
如果是这种情况,而不是使用CoreGraphics绘制点,我建议你做的是创建一个UIView
子类,它知道如何绘制一个点,并且它是整个大小(宽度和高度)对应于点的直径。同时使背景透明。
完成后,您可以根据需要创建任意数量的点,并将其添加为另一个包含视图的子视图。如果你这样做,你将能够通过修改它们的frame.origin
属性来自由移动点的原点(实际上是UIViews)。
更重要的是,frame
UIView的一个属性会自动为您动画,每当您更改任何点的位置(原点)时,动画都会被动画化。
如果您需要帮助,请与我们联系。
希望这有帮助!
答案 1 :(得分:2)
与之前发布的答案不同,我认为你的意思是想要旋转3个点的集合,而不是单独移动这些点。
您想在UIView
子类上设置transform属性:
self.transform = CGAffineTransformMakeRotation(M_PI_2); // pi/2 = 90deg clockwise
除了能够旋转视图外,您还可以使用变换移动和缩放。而且您可以轻松地从一个变换动画到另一个变换。
设置视图变换时有很多棘手的事情,例如设置视图边界与其框架之间存在显着差异,设置视图图层的锚点会改变旋转点。阅读View Geometry and Coordinate Systems中的View Programming Guide for iOS部分。