在以下示例中,我尝试在CATextLayer
内插入UIBezierPath
并将其旋转-45度。
class DiagonalView: UIView {
override func draw(_ rect: CGRect) {
let path = UIBezierPath()
path.move(to: .init(x: rect.maxX,y: rect.midY + (rect.midY / 2.5)))
path.addLine(to: .init(x: rect.midX + (rect.midX / 2.5),y: rect.maxY))
path.addLine(to: .init(x: rect.midX - (rect.midX / 10.5),y: rect.maxY))
path.addLine(to: .init(x: rect.maxX,y: rect.midY - (rect.midY / 10.5)))
let shapelayer = CAShapelayer()
shapelayer.path = path.cgPath
shapelayer.fillColor = UIColor.black.cgColor
layer.addSublayer(shapelayer)
let textlayer = CATextLayer.init()
textlayer.string = "iPhone X"
textlayer.fontSize = 12
textlayer.isWrapped = true
textlayer.foregroundColor = UIColor.white.cgColor
textlayer.frame = path.bounds
let degrees = -45.0
let radians = CGFloat(degrees * Double.pi / 180)
textlayer.transform = CATransform3DMakeTranslation(10,50,0)
textlayer.transform = CATransform3DMakeRotation(radians,0.0,0.5,1.0)
layer.addSublayer(textlayer)
}
}
let containerView = DiagonalView(frame: CGRect(x: 0.0,y: 0.0,width: 140.0,height: 140.0))
containerView.backgroundColor = .red
PlaygroundPage.current.liveView = containerView
虽然实际上不是我期望的结果
我可能会对代码犯什么错误有任何想法? 非常感谢您的宝贵时间!