在三角形 CAShapeLayer 上方添加文本
Add a text above the triangle CAShapeLayer
我用这个函数画了一个三角形
func drawTriangle(size: CGFloat, x: CGFloat, y: CGFloat, up:Bool) {
let triangleLayer = CAShapeLayer()
let trianglePath = UIBezierPath()
trianglePath.move(to: .zero)
trianglePath.addLine(to: CGPoint(x: -size, y: up ? size : -size))
trianglePath.addLine(to: CGPoint(x: size, y: up ? size : -size))
trianglePath.close()
triangleLayer.path = trianglePath.cgPath
triangleLayer.fillColor = UIColor.white.cgColor
triangleLayer.anchorPoint = .zero
triangleLayer.position = CGPoint(x: x, y: y)
triangleLayer.name = "triangle"
layer.addSublayer(triangleLayer)
}
并称它为:
drawTriangle(size: 10, x: frame.minX + 45, y: 40, up: false)
我如何修改此函数以使用相同的 x 和 y 坐标在此三角形上方或下方添加文本/标签。
非常感谢您的帮助。
要在三角形下方添加标签,您只需在零原点以零大小创建它,选择字体大小,将文本对齐设置为居中并调用 sizeToFit。然后,您需要做的就是将标签的中心设置在您传递给 drawTriangle 方法的同一点,但将标签高度的一半添加到 y 值。要将其添加到三角形上方,您需要减去。标签高度的一半和三角形的大小。
let x = view.frame.minX + 45
let y: CGFloat = 40
drawTriangle(size: 10, x: x, y: y, up: false)
let label = UILabel(frame: .init(origin: .zero, size: .zero))
label.font = .systemFont(ofSize: 10)
label.textColor = .white
label.text = "Whosebug"
label.backgroundColor = .red
label.textAlignment = .center
label.sizeToFit()
let labelHalfHeight = label.frame.height/2
label.center = .init(x: x, y: y + labelHalfHeight)
view.backgroundColor = .blue
view.addSubview(label)
我用这个函数画了一个三角形
func drawTriangle(size: CGFloat, x: CGFloat, y: CGFloat, up:Bool) {
let triangleLayer = CAShapeLayer()
let trianglePath = UIBezierPath()
trianglePath.move(to: .zero)
trianglePath.addLine(to: CGPoint(x: -size, y: up ? size : -size))
trianglePath.addLine(to: CGPoint(x: size, y: up ? size : -size))
trianglePath.close()
triangleLayer.path = trianglePath.cgPath
triangleLayer.fillColor = UIColor.white.cgColor
triangleLayer.anchorPoint = .zero
triangleLayer.position = CGPoint(x: x, y: y)
triangleLayer.name = "triangle"
layer.addSublayer(triangleLayer)
}
并称它为:
drawTriangle(size: 10, x: frame.minX + 45, y: 40, up: false)
我如何修改此函数以使用相同的 x 和 y 坐标在此三角形上方或下方添加文本/标签。
非常感谢您的帮助。
要在三角形下方添加标签,您只需在零原点以零大小创建它,选择字体大小,将文本对齐设置为居中并调用 sizeToFit。然后,您需要做的就是将标签的中心设置在您传递给 drawTriangle 方法的同一点,但将标签高度的一半添加到 y 值。要将其添加到三角形上方,您需要减去。标签高度的一半和三角形的大小。
let x = view.frame.minX + 45
let y: CGFloat = 40
drawTriangle(size: 10, x: x, y: y, up: false)
let label = UILabel(frame: .init(origin: .zero, size: .zero))
label.font = .systemFont(ofSize: 10)
label.textColor = .white
label.text = "Whosebug"
label.backgroundColor = .red
label.textAlignment = .center
label.sizeToFit()
let labelHalfHeight = label.frame.height/2
label.center = .init(x: x, y: y + labelHalfHeight)
view.backgroundColor = .blue
view.addSubview(label)