2014-09-29 3 views
0

기본적으로 순환 진행 막대를 표시하는 데 사용하는 drawRect 함수가 포함 된 클래스가 있습니다.Swift에서 클래스를 호출하여 drawRect 표시

내 문제는 진행률 원 표시 방법이 확실하지 않다는 것입니다. 나는 전에 수업을 많이 해 본 적이 없으므로 수업과 실제로 어떻게 상호 작용하는지 전혀 모른다. 내 SecondViewController 클래스 상기 코드를 가지고 난의 뷰 ('budgetDisplayView') 중 하나에 순환 진행 막대를 표시하고자

class ProgressCircle: UIView { 

override func drawRect(rect: CGRect) { 
    var ctx = UIGraphicsGetCurrentContext() 

    var progress: CGFloat = 0.7 
    var innerRadiusRatio: CGFloat = 0.5 

    var path: CGMutablePathRef = CGPathCreateMutable() 
    var startAngle: CGFloat = CGFloat(-M_PI_2) 
    var endAngle: CGFloat = CGFloat(-M_PI_2) + min(1.0, progress) * CGFloat(M_PI * 2) 
    var outerRadius: CGFloat = CGRectGetWidth(self.bounds) * 0.5 - 1.0 
    var innerRadius: CGFloat = outerRadius * innerRadiusRatio 
    var center = CGPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect)) 

    CGPathAddArc(path, nil, center.x, center.y, innerRadius, startAngle, endAngle, false) 
    CGPathAddArc(path, nil, center.x, center.y, outerRadius, endAngle, startAngle, true) 
    CGPathCloseSubpath(path) 
    CGContextAddPath(ctx, path) 

    CGContextSaveGState(ctx) 
    CGContextClip(ctx) 
    CGContextDrawImage(ctx, self.bounds, UIImage(named: "RadialProgressFill").CGImage) 
    CGContextRestoreGState(ctx) 
} 

}

: 여기

내 코드 두 번째보기 컨트롤러.

어떻게하면됩니까?

+0

사용자 정의보기 (ProgressCircle)를보기 계층 구조에 추가하기 만하면 UIKit에서 drawRect를 호출합니다. 예를 들어 viewDidLoad에 'self.view.addSubview (progressCircle)'와 같은 것을 추가하면 – Clafou

+0

불행하게도 '(ProgressCircle) .Type은 UIView로 변환 할 수 없습니다'라는 오류 메시지가 나타납니다. – user3746428

+0

클래스와 객체를 혼동스럽게합니다. OOP 개념에 대한 빠른 과정을 수행하는 것이 좋습니다. 위의 줄 앞에 객체를 만들려면 'progressCircle = ProgressCircle()'을 입력하고 올바른 대문자를 사용하려면 위의 줄을 입력하십시오 (progressCircle는 인스턴스이고 클래스는 ProgressCircle가 아닙니다) – Clafou

답변

0

ProgressCircle을 subView처럼 추가해야합니다.

class SecondViewController: UIViewController { 

//or add where you want or an event 
override func viewDidAppear(animated: Bool) { 
    //give the appropriate frame 
    var circle = ProgressCircle(frame: self.view.bounds) 
    self.budgetDisplayView.addSubview(circle) 
} 
} 
+0

응답 해 주셔서 감사합니다. 그러나, 이것은 나에게 검은 화면을주는 것 같습니다. – user3746428

+0

이것은 'progressCircle'이 추가되었음을 의미합니다. 그러나 예상대로 작동하지 않을 수 있습니다.'drawRect'를 확인해야합니다. – codester

관련 문제