2014-10-01 4 views
1

내 앱에 순환 진행 표시 줄이 있는데 잘 작동하는 것 같습니다. 그러나 어떤 이유로 나는 진행률 표시 줄을 축소 할 수 없습니다.진행률 표시 줄을 0 %로 재설정 할 수 없습니다.

기본적으로이 기능은 지출 한 사용자 예산의 비율을 표시하는 것입니다. 그러나 사용자는 또한 신용 거래를 추가 할 수 있습니다. 물론 신용 거래는 총 예산이 증가했기 때문에 진행률 표시 줄을 줄이려고합니다. 그러나 이렇게하지 않는 것 같습니다. 또한 예산이 재설정되면 작동하지 않는 0 %로 재설정해야합니다.

progress = 0.00 

이 진행이 계산 방법은 다음과 같습니다 :

 percent = 100*totalSpendingsCounter/(currencyDouble + totalCreditCounter) 
    let nf = NSNumberFormatter() 
    nf.numberStyle = .DecimalStyle 

    if percent > 100 { 
     percentageDisplay.text = "100%" 
    } else { 
     var percentString = nf.stringFromNumber(percent) + "%" 
     percentageDisplay.text = percentString 
    } 

    progress = CGFloat(percent/100) 

var progress: CGFloat = 0 

class ProgressCircle: UIView { 

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

    var innerRadiusRatio: CGFloat = 0.6 

    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) 
} 

이 내가 현재 재설정하려고하는 방법이다 : 여기

는 진행 원 코드입니다

아이디어가 있으십니까?

답변

2

먼저 진행률은 전역 변수가 아닌 ProgressCircle의 속성이어야합니다. 둘째, 다시 설정할 필요가 있다고 표시해야합니다.

class ProgressCircle: UIView { 

    var progress: CGFloat = 0 { 
     didSet { 
      setNeedsDisplay() 
     } 
    } 

    (The rest of your code...) 
+0

아, setNeedsDisplay() 함수는 어떻게해야합니까? – user3746428

+1

UIView에 기본 제공되는 기본 제공 메서드입니다. 그것은 자신을 다시 그려야한다는 견해를 말해줍니다. –

+0

아, 알겠습니다. 고마워. – user3746428