2010-08-28 138 views
0

任何通过iTunes上的斯坦福CS193P课程的人都会从作业3(HelloPoly)中识别出这一点。对于那些不熟悉的人:iPhone:旋转绘图而不旋转绘制它的视图

我有一个称为polyView的自定义视图,它是UIView子类PolygonView的一个实例。在这个视图中,我使用CGContextDrawLinearGradient在整个矩形视图上绘制颜色渐变。然后我使用CGContextDrawPath在polyView的边界内描边和填充一个多边形。我在视图(和多边形)的中心有一个名为nameLabel的UILabel,它显示多边形的名称(三角形,四边形,五边形等)。所有这些都可以正常工作,并且执行所有操作的代码位于PolygonView类的 - (void)drawRect方法中。

我遇到麻烦的地方还有一个额外的要求,即在视图内旋转多边形以响应用户的手势。我使用CGAffineTransformRotate()来响应PolygonView类中的touchesBegan()和touchesMoved()事件,这也基本上起作用。但我只能旋转整个polyView,而不仅仅是绘制它的多边形。我相信我可以回去重新计算多边形的路径,并根据每个touchesMoved()事件重新绘制/填充路径,但这样做会很昂贵并且不是最好的方法。如何使用CGAffineTransformRotate旋转多边形,而不旋转渐变填充视图或中心的标签?

或者有什么方法可以创建一个图层上的多边形,我可以在所需的旋转角度放置在背景polyView上?

感谢您给予初学者的帮助!

杜安

回答

0

你可以只是在做旋转变换,然后绘制多边形,并用CGContextRestoreGState(...)后恢复绘图状态之前做CGContextSaveGState(...),以免影响稍后在视图中的任何其他绘图。

+0

添加这些说明并没有改变,但我确定这是因为我试图做一些不起作用的东西。我想我会尝试采取CALayer方法。感谢您的建议。 – user433956 2010-08-30 13:19:56