繪制進度條

重繪-下載進度條(setNeedsDisplay)的步驟

  1. 布局控件:UISliderView,自定義view用來畫圓弧進度條,UILabel
  • 功能一:UILabel的text值與UISliderView相關,監聽UISliderView的進度,顯示text值

  • 功能二:圓弧進度條的長度與與UISliderView相關,監聽UISliderView的進度,顯示圓弧進度條

    1. 繪制圓弧
    • 根據新進度值重新繪制圓弧

在progressView.m中

- (void)setProgress:(CGFloat)progress
{
    _progress = progress;
    // 每次獲取新進度后重繪
    [self setNeedsDisplay];
}

- (void)drawRect:(CGRect)rect {

    // Drawing code
    CGPoint center = CGPointMake(rect.size.width * 0.5, rect.size.height * 0.5);

    //- M_PI_2表示從12點鐘位置開始繪制
    CGFloat endA = - M_PI_2 + M_PI * 2 * _progress;

    // 圓弧
    UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:rect.size.width * 0.5 - 4 startAngle:-M_PI_2 endAngle:endA clockwise:YES];

    [path stroke];

}

在vc.m中

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *labelView;
@property (weak, nonatomic) IBOutlet ProgressView *progressView;

@end

@implementation ViewController
//監控進度條UISliderView
- (IBAction)valueChange:(UISlider *)sender {
    // 在@“”中轉義字符%% = %
    _labelView.text = [NSString stringWithFormat:@"%.2f%%",sender.value * 100];

    // 傳入下載進度
    _progressView.progress = sender.value;
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容