自訂 UIProgressView 時,若發現進度球無法顯示在起始位置,通常與進度值對應的座標計算有關。可參考 UISlider 的設計概念,至少應包含 minValue、maxValue 與 value 三個屬性。
-(void)setValue:(float)value {
_value = value;
CGFloat perValue = self.bounds.width / maxValue;
int x = (int)(value * perValue);
circle.frame = CGRectMake(x, ...);
[self setNeedsDisplay];
}
這樣即可確保進度球隨數值變化而正確移動,且在起始值時位於起點。