我有一个函数被调用来创建标签并定位它们来模拟图形中的尺寸(如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
}
答案 0 :(得分:0)
作为renderInContext:documentation说明:"在图层的坐标空间中渲染。"这意味着将忽略图层/视图的框架原点。
您可能希望在致电CGContextTranslateCTM
之前使用label.layer.render(in: ctx)
。请务必使用CGContextSaveGState
和CGContextRestoreGState
保存并恢复每次通话的CTM。
另外,我怀疑是否需要致电label.draw(CGRect(x: CGFloat(posX), y: CGFloat(posY), width: 100, height: 30))
。因为它不应该手动调用。