标签创建未定位在dwg中

时间:2017-05-13 10:17:44

标签: ios swift core-graphics

我有一个函数被调用来创建标签并定位它们来模拟图形中的尺寸(如cad前视图);但是,即使通过调用函数正确发送x和y坐标,它们也都位于左上角。我在这个问题上遇到了障碍,并希望得到任何帮助。see screenshot I took and you'll notice that all the labels are scrunched up in the top left corner

所有dwg都被添加到CGContext

这是我的功能:

    public func drawText(ctx: CGContext,
                    txtCol:UIColor,
                    text:String,
                    posX:Double,
                    posY:Double,
                    rotation:Double,
                    fill:Bool) -> CGContext {

    let label = UILabel()
    label.textAlignment = .center
    label.text = text
    label.textColor = txtCol
    label.transform = CGAffineTransform(rotationAngle: CGFloat.pi / 2)
    if fill {
        label.backgroundColor = UIColor.yellow
    }
    label.draw(CGRect(x: CGFloat(posX), y: CGFloat(posY), width: 100, height: 30))
    label.layer.render(in: ctx)
    return ctx
}

1 个答案:

答案 0 :(得分:0)

作为renderInContext:documentation说明:"在图层的坐标空间中渲染。"这意味着将忽略图层/视图的框架原点。 您可能希望在致电CGContextTranslateCTM之前使用label.layer.render(in: ctx)。请务必使用CGContextSaveGStateCGContextRestoreGState保存并恢复每次通话的CTM。

另外,我怀疑是否需要致电label.draw(CGRect(x: CGFloat(posX), y: CGFloat(posY), width: 100, height: 30))。因为它不应该手动调用。