swift - Swift-UIBezierPath 추가 인수 '반경'호출

기사 출처 swift uibezierpath layoutsubviews

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) 

}


나는 애플이 말하는 것과 같은 방법을 사용하면 왜 '반경'이 추가 인수인지 이해하지 못합니다 ...
그것을 해결하는 방법을 알고 있습니까?
감사!
오류 메시지는 매우 오해의 소지가 있습니다. 진짜 문제는 endAngle:
UIBezierPath(...)의 매개 변수는 CGFloat 유형이지만
Double 인수. 값을 명시 적으로 캐스팅하면 다음과 같은 이점이 있습니다.

var endAngle = CGFloat(2.0 * M_PI - M_PI_2)


32 비트 아키텍처 용으로 컴파일 할 때 문제가 발생합니다. 여기서 CGFloat
Float가 아니라 Double로 정의됩니다.

https://github.com/ksm/SwiftInFlux 참조 :


여기서 일어나는 것은 CGFloat가 Float에 대한 typealias라는 것입니다.
또는 32 비트 또는 64 비트 용으로 빌드하는지 여부에 따라 Double입니다. 이
Objective-C가 정확히 작동하는 방식이지만 Swift에서는 문제가됩니다.
Swift는 암시 적 변환을 허용하지 않습니다.

우리는이 문제를 알고 있으며 심각하다고 생각합니다.
지금 여러 가지 솔루션을 평가하고 하나를 출시 할 예정입니다.
나중 베타에서. 아시다시피 오늘 다음과 같이 대처할 수 있습니다.
Double로 캐스팅합니다. 이것은 우아하지 않지만 효과적입니다 :-)

-크리스 래트너

출처 : https://devforums.apple.com/message/998222#998222

이 질문에 대해 Stack Overflow에서 비슷한 토론을 찾았습니다: https://stackoverflow.com/questions/24741741/

관련 기사
arrays - Swift 배열 유형은 이제 다차원 배열이있는 요소 유형 주위에 대괄호로 작성됩니다.
webview - Swift의 WebView에서 웹 검사기 활성화
ios - Swift에서 두 개의 CGFloat의 최소값을 얻으려면 어떻게해야합니까? [복제]
cocoa - 펜촉 이름으로 NSWindow 생성
objective-c - Swift에서 지정된 슈퍼 클래스 이니셜 라이저를 호출하는 방법
uiwebview - Simple Swift WebView가 작동하지 않음 (Xcode 6 Beta 3)
ios - SWIFT-xcode 6 베타 6.의 KVO. observeValueForKeyPath가 더 이상 호출되지 않습니다.
ios - Swift에서 Core Data로부터받은 배열 정렬
ios - UIView.animateWithDuration 완료
ios - 신속한 iOS에서 텍스트 필드 UI 업데이트