如何渲染旋转的UIlabel

时间:2012-10-02 07:41:15

标签: iphone ios uilabel transform render

我目前正在为iPad开发类似Photoshop的应用程序,当我想要展平我的图层阵列时,DrawTextInRect不会保留CAAffineTransformMakeRotation的变换(UILabel)。有人有任何想法吗?

2 个答案:

答案 0 :(得分:0)

将文本绘制到另一个上下文中并获取它的CGImage,然后查看在旋转的上下文中绘制图像是否有效(应该)。

编辑:我自己没有这样做,我相信它会奏效。执行此操作时,标签可能不应插入视图中,但无论如何它都可能以这种方式工作。您可能需要进行试验:

UIGraphicsBeginImageContextWithOptions( myLabel.bounds.size, NO, 0); // 0 == [UIScreen mainScreen].scale
CGContextRef context = UIGraphicsGetCurrentContext();

[myLabel.layer renderInContext:context];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

答案 1 :(得分:0)

将上下文翻译为标签的来源,然后将标签的变换应用于上下文。

以下代码在Swift中。

let context = UIGraphicsGetCurrentContext()!

context.saveGState()

let t = myLabel.transform
let translationPt = CGPoint.init(x: myLabel.frame.origin.x, y: myLabel.frame.origin.y)
context.translateBy(x: translationPt.x, y: translationPt.y)

context.concatenate(t)

myLabel.layer.render(in: context)

context.restoreGState()