在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;
答案 0 :(得分:0)
按比例增加它的帧数。它应该工作
答案 1 :(得分:0)
由于45度X轴变换,该标签的大约一半现在在Z轴的负部分被遮挡。对象的框架也有效地被切成两半,这迫使标签截断其文本。如果要增加对象的框架,他们会很快发现它不起作用。仅仅因为相对于它的超视图的帧增加了,并不意味着标签的变换坐标中的边界矩形已经更新。为此,我们分配到边界。要修复截断问题,请指定一个边界,其宽度只有当前标签边界的两倍,这会强制渲染引擎将标签的“负z轴”部分视为可绘制。
(对缺乏图形表示歉意,因为它本来是非常有帮助的)