gpt4 book ai didi

ios - 如何在 iOS 中相对于左上角旋转 UILabel

转载 作者:可可西里 更新时间:2023-11-01 00:52:55 24 4
gpt4 key购买 nike

我使用下面的代码来旋转标签文本

 mylabel.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))

这会起作用。但它会在中心旋转 UILabel

假设我的 UILabel 左上角是 (10,10),当我旋转它时,它的左上角不应该改变(就像半径或圆)。

如何相对于左上角旋转它?。

请帮帮我

编辑:

这是代码

  var  transA = CGAffineTransformMakeTranslation(mylabel.frame.size.width/2,mylabel.frame.size.height/2);
var rotation = CGAffineTransformMakeRotation(CGFloat(M_PI_4));
var transB = CGAffineTransformMakeTranslation(-mylabel.frame.size.width/2,-mylabel.frame.size.height/2);


mylabel.transform = CGAffineTransformConcat(CGAffineTransformConcat(transA,rotation),transB);


var transform = transA
mylabel.transform = CGAffineTransformConcat(mylabel.transform, transform)

编辑问题:如何使我的标签看起来像一个圆的半径。即我可以相对于原点 360 度旋转它?

最佳答案

您可以为此做两件事。

A)

您可以更改标签的 anchor :

mylabel.layer.anchorPoint = CGPointMake(0,0); // This will set the anchor point to the top left

现在您可以围绕该点旋转。这将更改所有转换的 anchor !

B)

你可以这样做:

CGAffineTransform transA = CGAffineTransformMakeTranslation(mylabel.frame.size.width/2,mylabel.frame.size.height/2);
CGAFfineTransfrom rotation = CGAffineTransformMakeRotation(M_PI_2);
CGAffineTransform transB = CGAffineTransformMakeTranslation(-mylabel.frame.size.width/2,-mylabel.frame.size.height/2);
mylabel.transform = CGAffineTransformConcat(CGAffineTransformConcat(transA,rotation),transB);

这不会改变您的 anchor ,因此不会影响其他转换!

(如果旋转错误,您可能需要将 transA 更改为 transB)

更新

如果你想“保持”旋转(如评论中所问),你可以这样做:

CGAffineTransform transform = ... // Put the transform here that you used in A) or B)

mylayer.transfrom = CGAffineTransfromConcat(mylayer.transform,transform);

这样你就可以说“我之前在哪里”——再旋转 90(或 45)度

更新 2

您的代码应如下所示:

var  transA = CGAffineTransformMakeTranslation(mylabel.frame.size.width/2,mylabel.frame.size.height/2);
var rotation = CGAffineTransformMakeRotation(CGFloat(M_PI_2));
var transB = CGAffineTransformMakeTranslation(-mylabel.frame.size.width/2,-mylabel.frame.size.height/2);


var transform = CGAffineTransformConcat(CGAffineTransformConcat(transA,rotation),transB);

mylabel.transform = CGAffineTransformConcat(mylabel.transform, transform)

关于ios - 如何在 iOS 中相对于左上角旋转 UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31000530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com