gpt4 book ai didi

ios - 设置 SKShapeNode 一个角的半径

转载 作者:可可西里 更新时间:2023-11-01 01:07:56 25 4
gpt4 key购买 nike

我想更改 SKShapeNode(矩形)两个角的半径,但我没有找到可行的解决方案。我试过使用路径,但没有用。 swift 4.2、iOS 12.1.1、Xcode 10.1

let shape = SKShapeNode()
shape.path = UIBezierPath(roundedRect: CGRect(x: -128, y: -128, width: 256, height: 256), cornerRadius: 64).cgPath
shape.position = CGPoint(x: frame.midX, y: frame.midY)
shape.fillColor = UIColor.red
shape.strokeColor = UIColor.blue
shape.lineWidth = 10
addChild(shape)

最佳答案

我制作了一个函数,允许您将每个角半径自定义为您想要的任何大小。您可以有 1、2、3 或 4 个带半径的角。如果您总是只想要两个角,那么我建议您制作一个包装函数,这样您每次调用它时就不必填写那么多参数。

func CustomRoundRectPath(_ rect:CGRect, _ TLR:CGFloat,_ TRR:CGFloat,_ BLR:CGFloat,_ BRR:CGFloat) -> CGPath {

let w = rect.width
let h = rect.height

//TLP:(TLP)
let TLP = CGPoint(x: TLR, y: h - TLR)
let TRP = CGPoint(x: w - TRR, y: h - TRR)
let BLP = CGPoint(x: BLR, y: BLR)
let BRP = CGPoint(x: w - BRR, y: BRR)

//Create path and addComponents
let path = CGMutablePath()
path.addArc(center: TLP, radius: TLR, startAngle: CGFloat.pi, endAngle: CGFloat.pi/2, clockwise: true)
path.addLine(to: CGPoint(x: TRP.x, y: h))
path.addArc(center: TRP, radius: TRR, startAngle: CGFloat.pi/2, endAngle: 0, clockwise: true)
path.addLine(to: CGPoint(x: w, y: BRP.y))
path.addArc(center: BRP, radius: BRR, startAngle: 0, endAngle: -CGFloat.pi/2, clockwise: true)
path.addLine(to: CGPoint(x: BLP.x, y: 0))
path.addArc(center: BLP, radius: BLR, startAngle: -CGFloat.pi/2, endAngle: -CGFloat.pi, clockwise: true)
path.addLine(to: CGPoint(x: 0, y: TLP.y))

return path
}

关于ios - 设置 SKShapeNode 一个角的半径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53667187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com