0

在 3D 空间中旋转 a 后UILabel,它会被截断。我不知道为什么标签会在旋转后截断文本,因为最初,文本很合适。

在此处输入图像描述

在此处输入图像描述

这是我的轮换代码。注释掉代码时(除了sizeToFit),一切都很好。

CALayer *layer = label.layer;
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / -500;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 45.0f * M_PI / 180.0f, 0.0f, 1.0f, 0.0f);
layer.transform = rotationAndPerspectiveTransform;

[label sizeToFit];

我可以在调用后调整标签框架的大小sizeToFit,但我无法以编程方式确定正确的数字。在下面的代码中,我确定了文本的宽度并调整了标签框架的大小,但文本仍然被截断。

CGRect frame = label.frame;
frame.size.width = [label.text sizeWithFont:label.font].width;
label.frame = frame;
4

2 回答 2

0

只需按比例增加 It's Frame 即可。它应该工作

于 2013-06-14T06:03:35.813 回答
0

由于 45 度 X 轴变换,该标签的大约一半现在在 Z 轴的负部分中被遮挡。对象的框架也被有效地切成两半,这迫使标签截断其文本。如果增加对象的框架,他们很快就会发现它没有任何效果。仅仅因为相对于它的超级视图的框架增加了,并不意味着标签变换坐标中的边界矩形已经更新。为此,我们分配了边界。要解决截断问题,请分配一个宽度约为当前标签边界宽度两倍的边界,这会强制渲染引擎将标签的“负 z 轴”部分视为可绘制的。

(抱歉缺少图形,因为它真的很有帮助)

于 2013-06-14T07:17:35.880 回答