您的位置:首页 > 移动开发 > IOS开发

ios 滑块进度条百分比 显示进度

2015-10-08 10:53 447 查看
<span style="font-family: Arial, Helvetica, sans-serif;">
</span>
<span style="font-family: Arial, Helvetica, sans-serif;">
</span>
<span style="font-family: Arial, Helvetica, sans-serif;">//该方法监听slider的值的改变</span>
- (IBAction)progressChanged:(UISlider *)sender {
    CGFloat progress = sender.value;
    if (progress == 100) {
        [sender setMaximumValueImage:[UIImage imageNamed:@"finish"]];
        [sender setThumbImage:nil forState:UIControlStateNormal];
    }else{
        UIImage *image = [self progressImage:[NSString stringWithFormat:@"%d%%",(int)progress]];
        [sender setThumbImage:image forState:UIControlStateNormal];
        [sender setMaximumValueImage:nil];
    }
     
     
}
 
//该方法绘制要显示百分比的圈圈图片
- (UIImage*)progressImage:(NSString*)progress{
    CGFloat imageW = 33;
    CGFloat imageH = 33;
    CGSize progressSize = [progress boundingRectWithSize:CGSizeMake(MAXFLOAT, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12]} context:nil].size;
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(imageW, imageH), NO,[UIScreen mainScreen].scale);
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    [[UIColor colorWithRed:238/255.0 green:238/255.0 blue:238/255.0 alpha:1]set];
    CGContextAddEllipseInRect(ctx, CGRectMake(0,0,imageW,imageH));
    CGContextFillPath(ctx);
    [[UIColor whiteColor]setFill];
        CGContextAddEllipseInRect(ctx, CGRectMake(1,1,imageW-2,imageH-2));
        CGContextFillPath(ctx);
    [progress drawInRect:CGRectMake(imageW * 0.5 - progressSize.width * 0.5 ,imageH * 0.5 - progressSize.height * 0.5  ,progressSize.width,progressSize.height) withAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12],NSForegroundColorAttributeName:[UIColor colorWithRed:86/255.0 green:119/255.0 blue:252/255.0 alpha:1]}];
    UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

首先创建一个滑块

UISlider *sliderA=[[UISlider alloc]initWithFrame:CGRectMake(30, 320, 257, 7)];

sliderA.backgroundColor = [UIColor clearColor];

sliderA.value=1.0;

sliderA.minimumValue=0;

sliderA.maximumValue=100;

// [sliderA setMinimumTrackImage:stetchLeftTrack forState:UIControlStateNormal];
//
// [sliderA setMaximumTrackImage:stetchRightTrack forState:UIControlStateNormal];
//
// //注意这里要加UIControlStateHightlighted的状态,否则当拖动滑块时滑块将变成原生的控件
// [sliderA setThumbImage:thumbImage forState:UIControlStateHighlighted];
//
// [sliderA setThumbImage:thumbImage forState:UIControlStateNormal];

//滑块拖动时的事件
[sliderA addTarget:self action:@selector(progressChanged:) forControlEvents:UIControlEventValueChanged];
//
// //滑动拖动后的事件
// [sliderA addTarget:self action:@selector(sliderDragUp:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:sliderA];

// [self progressChanged:sliderA];

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: