Swift – UIBezierPath调用中的额外参数’radius’
我正在调整Objective-C库(
STKSpinnerView)到Swift,我无法解决这个错误:
func getRadius() -> CGFloat { var r : CGRect = CGRectInset(self.bounds,self.wellThickness/2.0,self.wellThickness/2.0) var w : CGFloat = r.size.width var h : CGFloat = r.size.height if w > h { return h/2.0 }else{ return w/2.0 } } override func layoutSubviews() { super.layoutSubviews() var bounds : CGRect = self.bounds var wt : CGFloat = self.wellThickness var outer : CGRect = CGRectInset(self.bounds,wt/2.0,wt/2.0) var inner : CGRect = CGRectInset(self.bounds,wt,wt) var innerPath : UIBezierPath = UIBezierPath(ovalInRect: inner) var arcCenter = CGPointMake(CGRectGetMidX(outer),CGRectGetMidY(outer)) var radius = self.getRadius() var startAngle = -(CGFloat(M_PI_2)) var endAngle = (2.0 * M_PI - M_PI_2) // (Next line) ERROR: Extra argument 'radius' in call var outerPath : UIBezierPath = UIBezierPath(arcCenter: arcCenter,radius: radius,startAngle: startAngle,endAngle: endAngle,clockwise: true) } 我不明白为什么’radius’是一个额外的论据,如果我使用像Apple这样的方法… 解决方法
错误消息非常误导.真正的问题是endAngle:
UIBezierPath(…)的参数具有CGFloat类型,但是您传递了一个 双重论点.显式地转换值有助于: var endAngle = CGFloat(2.0 * M_PI - M_PI_2) 编译32位体系结构时出现问题,其中CGFloat 另见https://github.com/ksm/SwiftInFlux:
|