【问题标题】:Perspective transform on UILabelUILabel 上的透视变换
【发布时间】:2013-01-13 10:07:56
【问题描述】:

我正在尝试在 UILabel 上添加一些透视图,使其显示为好像它被绘制在一个有角度的脸上。

这是我的测试标签:

应用转换后:

我的代码:

@implementation MyViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100.f, 250.f, 100.f, 30.f)];
    label.text = @"Hello";
    label.textAlignment = NSTextAlignmentCenter;
    label.backgroundColor = [UIColor greenColor];
    [label tiltDegrees:20.f];
    [self.view addSubview:label];
    [label release];
}

@end


@implementation UIView (Perspective)

-(void) tiltDegrees:(CGFloat)degrees {
    CATransform3D aTransform = CATransform3DIdentity;
    CGFloat zDistance = 100; // affects the sharpness of the transform
    aTransform.m34 = 1.0 / -zDistance;
    aTransform = CATransform3DRotate(aTransform, degrees * M_PI / 180.0f, 1.0f, 0.0f, 0.0f);
    self.layer.transform = aTransform;
}

@end

我遇到了一堆问题:

  1. 标签内的文本似乎不像UILabel 本身那样应用转换。它超出框架(剪辑),未居中,并且几何形状似乎不正确。也许尺寸也错了?
  2. 它是模糊的。我如何在文本向量之前对其进行光栅化处理。我认为这会产生清晰的结果。
  3. 我似乎无法确定zDistancedegrees 之间的协调性,因此它们会产生正确的视角。如何根据degrees正确计算zDistance

任何帮助解决 (1) (2) (3) 将不胜感激。 非常感谢

【问题讨论】:

    标签: uilabel calayer catransform3d catransform3drotate


    【解决方案1】:

    我不知道你是否已经解决了这个问题,但问题基本上是你的文本标签穿过它后面的灰色层,因此为什么它似乎夹在文本中间。

    将文本层平移到相机来解决这个问题。

    【讨论】:

      猜你喜欢
      • 2012-07-06
      • 2014-09-07
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-30
      • 2011-08-26
      • 2012-10-21
      相关资源
      最近更新 更多