如何让 uilabel 围绕一个点旋转?

Posted

技术标签:

【中文标题】如何让 uilabel 围绕一个点旋转?【英文标题】:How can i make a uilabel rotate around a point? 【发布时间】:2014-02-16 07:47:58 【问题描述】:

例如:我有4个uilabel:label1 label2 label3 label4,在同一个位置,我让label2绕point1旋转90∘,label3绕point1旋转180∘,label4绕point1旋转270∘,旋转后,4个label围成一圈。

【问题讨论】:

【参考方案1】:

一个接一个地添加四个标签。然后:

[label setTransform:CGAffineTransformMakeRotation(-M_PI / 2)];

调整-M_PI / 2这部分实现其他旋转。

【讨论】:

【参考方案2】:

使用相同的框架将所有标签添加到它们的子视图。

将每个视图层的锚点更改为 (0.5, 3.0)。这改变了进行转换的点。锚点以单位空间为单位测量,意味着 1.0 是视图的全宽,1.0 是全高。默认锚点为 (0.5,0.5)。

对每个标签应用不同的旋转变换。它们现在将形成一个以锚点为中心的正方形。

如果您想让文本形成一个实际的圆圈,那么标签不是答案,您需要查看核心文本。

【讨论】:

我的代码就像 self.label.layer.anchorPoint = CGPointMake(1.0, 0.5);[self.label setTransform:CGAffineTransformMakeRotation(M_PI/2)];当我运行项目时,只有标签文本旋转,它围绕中心而不是我设置的锚点旋转。 尝试使用图层变换:self.layer.transform = CATransform3DMakeRotation(M_PI_2,0.0,0.0,1.0);

以上是关于如何让 uilabel 围绕一个点旋转?的主要内容,如果未能解决你的问题,请参考以下文章

在钟面上旋转 UILabel

如何多次围绕锚点旋转视图

如何围绕对象外部的点旋转节点(即不围绕对象的中心点旋转)

如何让一个sprite绕一个点旋转,同时又可以实现指定旋转角度并慢慢停下的效果

如何使用 glm::rotate 围绕原点以外的点旋转对象?

如何围绕任意轴旋转一个点?