2013-01-03 57 views
2

我有一个看起来像轮子的图像视图。该视图检测每个彩色部分的触摸事件。在旋转图像时保持图像可读的文字

我现在的问题是,当我旋转这个轮子时,视图顶部的UILabel也需要旋转,以便文本仍然是水平的和人类可读的。

在父视图旋转时旋转标签的最佳方式是什么?

这就是我现在想,它无法正常旋转......

CGAffineTransform textTransform = CGAffineTransformRotate(newTransform, newAngle * -1); 
+0

您是否尝试过制作聚合视图,其中标签是图形轮视图的子视图? – bryanmac

回答

3

想必你申请一个旋转变换旋转轮。如果标签是轮子视图的子视图,则它们的中心被固定在轮子的正确位置(因为视图位于其中心的超视图中),并且它们将与其一起移动。同时,将反转转换应用于标签。旋转发生在每个标签的中心周围。所以每个标签都保留在正确的位置并保持直立。

事后考虑 - 也要确保你没有在这些标签上使用自动布局。 Autolayout打破了视图转换。

+0

谢谢,但我确实尝试过......我将添加代码以向您显示我现在拥有的内容。这是设置文本转换的错误方法吗? – miex

+0

是的。看看你自己的代码并考虑一下。假设新的变换是30度。现在,您正在进行30度旋转变换并以另一种方式旋转30度。这是一个零度转换。所以你对标签什么都不做,而且它们随着轮子旋转 - 就是你不想要的。按照我的建议 - 从您应用于车轮的变换中获得逆变换,并将其应用于每个标签。 – matt

+0

谢谢马特 - 这确实结束了工作。我的代码反转角度是正确的,因为它是弧度而不是度数。我做错了是初始化下一个textTransform使用parent.transform而不是错误的label.transform ... – miex