gpt4 book ai didi

ios - CGMutablePath.addArc 在 Swift 3 中不起作用?

转载 作者:搜寻专家 更新时间:2023-10-31 08:16:26 25 4
gpt4 key购买 nike

在 Xcode 8 beta 6 中,一些添加路径的函数发生了变化,包括那些添加圆弧的函数:

func addArc(center: CGPoint, radius: CGFloat, startAngle: CGFloat, endAngle: CGFloat, clockwise: Bool, transform: CGAffineTransform = default)

除了函数定义之外,Apple 网站上没有任何文档。我一直无法从这个函数中获得实际的弧线,并且一直依赖于使用切线的第二个版本。任何人都可以提供工作样本吗?它会被窃听吗?

这是一个被更改破坏的函数:

public class func createHorizontalArcPath(_ startPoint:CGPoint, width:CGFloat, arcHeight:CGFloat, closed:Bool = false) -> CGMutablePath
{
// http://www.raywenderlich.com/33193/core-graphics-tutorial-arcs-and-paths

let arcRect = CGRect(x: startPoint.x, y: startPoint.y-arcHeight, width: width, height: arcHeight)

let arcRadius = (arcRect.size.height/2) + (pow(arcRect.size.width, 2) / (8*arcRect.size.height));
let arcCenter = CGPoint(x: arcRect.origin.x + arcRect.size.width/2, y: arcRect.origin.y + arcRadius);

let angle = acos(arcRect.size.width / (2*arcRadius));
let startAngle = CGFloat(M_PI)+angle // (180 degrees + angle)
let endAngle = CGFloat(M_PI*2)-angle // (360 degrees - angle)

let path = CGMutablePath();
path.addArc(center: arcCenter, radius: arcRadius, startAngle: startAngle, endAngle: endAngle, clockwise: true)
if(closed == true)
{path.addLine(to: startPoint)}
return path;
}

最佳答案

您的 Swift 代码基于 http://www.raywenderlich.com/33193/core-graphics-tutorial-arcs-and-paths 中的 Objective-C 代码,圆弧路径创建为

CGPathAddArc(path, NULL, arcCenter.x, arcCenter.y, arcRadius,
startAngle, endAngle, 0);

特别是,0 作为参数传递给最后一个参数 bool clockwise。这应该在 Swift 中被翻译成 false,而不是 true:

path.addArc(center: arcCenter, radius: arcRadius,
startAngle: startAngle, endAngle: endAngle, clockwise: false)

关于ios - CGMutablePath.addArc 在 Swift 3 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39061883/

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