【发布时间】:2013-06-14 05:59:21
【问题描述】:
在 3D 空间中旋转 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;
【问题讨论】:
-
我敢打赌,应用到变换的透视图会截断它。完成图层转换后重置它。
-
@CodaFi 我没有关注。你能解释一下细节吗?谢谢。
-
您看到如何应用 m34 透视变换了吗?完成图层转换后重置它。
-
@CodaFi 嗯...这没有做任何事情。
-
实际上,我这么建议是愚蠢的,因为我应该看看你应用的角度。由于转换影响对象边界的方式,您都会以任何一种方式截断。我希望我在 Photoshop 方面做得更好,这样我就可以绘制一张图像,向您展示它是如何以平面方式布置的。只要不说你做什么就够了,除了操纵它的界限,会有所作为。
标签: iphone ios objective-c ipad uilabel