本文实例为大家分享了iOS实现圆环比例图的具体代码,供大家参考,具体内容如下
实现效果
实现方法
1. SSTCircleProgressView
@interface SSTCircleProgressView : UIView /** *进度条的角的类型 */ @property (nonatomic,copy) CAShapeLayerLineCap lineCap; /** *进度条显示的文字 */ @property (nonatomic,copy) NSString *progressLabelText; /** *进度条显示的文字的颜色 */ @property (nonatomic,copy) UIColor *progressLabelTextColor; /** *进度条宽度 */ @property (nonatomic,assign) CGFloat progressLineWidth; /** * 背景线条宽度 */ @property (nonatomic,assign) CGFloat backgroundLineWidth; /** * 进度百分比 */ @property (nonatomic,assign) CGFloat percentage; /** * 背景填充颜色 */ @property (nonatomic,strong) UIColor *backgroundStrokeColor; /** * 进度条填充颜色 */ @property (nonatomic,strong) UIColor *progressStrokeColor; /** * 距离边框边距偏移量 */ @property (nonatomic,assign) CGFloat offset; - (void)setProgress:(CGFloat)percentage animated:(BOOL)animated; @end
#import "SSTCircleProgressView.h" #define kDuration 1.0 #define kDefaultLineWidth 10 @interface SSTCircleProgressView() @property (nonatomic,strong) CAShapeLayer *backgroundLayer; @property (nonatomic,strong) CAShapeLayer *progressLayer; @property (nonatomic,strong) UILabel *progressLabel; @property (nonatomic,strong) NSTimer *timer; @property (nonatomic,assign) CGFloat startAngle ; // M_PI*2 @property (nonatomic,assign) CGFloat endAngle ; @end @implementation SSTCircleProgressView - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self setBackgroundColor:[UIColor clearColor]]; [self createSubViews]; //init default variable self.backgroundLineWidth = kDefaultLineWidth; self.progressLineWidth = kDefaultLineWidth; self.percentage = 0; self.offset = 0; self.startAngle = -M_PI_2; self.endAngle = 0; } return self; } - (void)createSubViews { //self.progressLabel.text = @"0%"; self.progressLabel.textAlignment = NSTextAlignmentCenter; self.progressLabel.font = FONTBOLD(12); [self addSubview:self.progressLabel]; _backgroundLayer = [CAShapeLayer layer]; _backgroundLayer.frame = self.bounds; _backgroundLayer.fillColor = nil; _backgroundLayer.strokeColor = [UIColor lightGrayColor].CGColor; _progressLayer = [CAShapeLayer layer]; _progressLayer.frame = self.bounds; _progressLayer.fillColor = nil; _progressLayer.strokeColor = [UIColor redColor].CGColor; [self.layer addSublayer:_backgroundLayer]; [self.layer addSublayer:_progressLayer]; } -(void)setProgressLabelText:(NSString *)progressLabelText{ _progressLabelText = progressLabelText; self.progressLabel.text = progressLabelText; } -(void)setProgressLabelTextColor:(UIColor *)progressLabelTextColor{ _progressLabelTextColor = progressLabelTextColor; self.progressLabel.textColor = progressLabelTextColor; } #pragma mark - Draw CircleLine - (void)setBackgroundCircleLine { UIBezierPath *path = [UIBezierPath bezierPath]; path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(self.center.x - self.frame.origin.x, self.center.y - self.frame.origin.y) radius:(self.frame.size.width - _backgroundLineWidth)/2 - _offset startAngle:self.startAngle endAngle:self.endAngle clockwise:NO]; _backgroundLayer.path = path.CGPath; } - (void)setProgressCircleLine { UIBezierPath *path = [UIBezierPath bezierPath]; path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(self.center.x - self.frame.origin.x, self.center.y - self.frame.origin.y) radius:(self.frame.size.width - _progressLineWidth)/2 - _offset startAngle:self.startAngle endAngle:self.endAngle clockwise:NO]; _progressLayer.path = path.CGPath; } #pragma mark - Lazy Load - (UILabel *)progressLabel { if (!_progressLabel) { _progressLabel = [[UILabel alloc]initWithFrame:CGRectMake((self.bounds.size.width -100)/2, (self.bounds.size.height - 100)/2, 100, 100)]; } return _progressLabel; } - (void)setBackgroundLineWidth:(CGFloat)backgroundLineWidth { _backgroundLineWidth = backgroundLineWidth; _backgroundLayer.lineWidth = _backgroundLineWidth; [self setBackgroundCircleLine]; } -(void)setLineCap:(CAShapeLayerLineCap)lineCap{ _progressLayer.lineCap = lineCap; [self setProgressCircleLine]; } - (void)setProgressLineWidth:(CGFloat)progressLineWidth { _progressLineWidth = progressLineWidth; _progressLayer.lineWidth = _progressLineWidth; [self setProgressCircleLine]; } - (void)setPercentage:(CGFloat)percentage { _percentage = percentage; } - (void)setBackgroundStrokeColor:(UIColor *)backgroundStrokeColor { _backgroundStrokeColor = backgroundStrokeColor; _backgroundLayer.strokeColor = _backgroundStrokeColor.CGColor; } - (void)setProgressStrokeColor:(UIColor *)progressStrokeColor { _progressStrokeColor = progressStrokeColor; _progressLayer.strokeColor = _progressStrokeColor.CGColor; } #pragma mark - progress animated YES or NO - (void)setProgress:(CGFloat)percentage animated:(BOOL)animated { self.percentage = percentage; _progressLayer.strokeEnd = _percentage; if (animated) { CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"]; animation.fromValue = [NSNumber numberWithFloat:0.0]; animation.toValue = [NSNumber numberWithFloat:_percentage]; animation.duration = kDuration; [_progressLayer addAnimation:animation forKey:@"strokeEndAnimation"]; }else{ [CATransaction begin]; [CATransaction setDisableActions:YES]; _progressLabel.text = [NSString stringWithFormat:@"%.0f%%",_percentage*100]; [CATransaction commit]; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍QML实现圆环颜色选择器,包括了QML实现圆环颜色选择器的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了QML实现圆环颜色选择器的具体代码,供大家参考,具体内容如下 话不多说,先上效果图: ColorSelector组件代码如下,有问题可以留言: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍Android自定义View实现圆环带数字百分比进度条,包括了Android自定义View实现圆环带数字百分比进度条的使用技巧和注意事项,需要的朋友参考一下 分享一个自己制作的Android自定义View。是一个圆环形状的反映真实进度的进度条,百分比的进度文字跟随已完成进度的圆弧转动。以下是效果图: 这个自定义View可以根据需要设定圆环的宽度和百分比文字的大小。 先说一下思路:这个
本文向大家介绍iOS实现轮播图banner示例,包括了iOS实现轮播图banner示例的使用技巧和注意事项,需要的朋友参考一下 楼主项目中需要有一个轮播图,因为比较简单,就自己写了个,因为是从网上弄得图片 所以用了SDWebImage 这个三方库 当然自己也可以去掉 类型后面有*号 如用使用 请自行加上。。。。。 代码:.h 文件 .m文件 在项目中 导入头文件 遵守代理 以上就是本文的全部内
本文向大家介绍IOS实现圆形图片效果的两种方法,包括了IOS实现圆形图片效果的两种方法的使用技巧和注意事项,需要的朋友参考一下 先来看看效果图 ↓ 这个显示效果的做法有很多: 方法一: 使用两张图片, 作为边框的背景图片和中间的图片,然后使用imageView的cornerRadius来做圆, 具体代码如下: 但是很显然, 今天的主角并不是上边的方法.上边的做法需要两张图片来完成带边框的圆形图片,
二维圆环图 <?php declare(strict_types = 1); $config = [ 'path' => './tests', ]; $dataHeader = [ 'Category', 'Values', ]; $dataRows = [ ['Glazed', 50], ['Chocolate', 35], ['Cream',
本文向大家介绍iOS实现带文字的圆形头像效果,包括了iOS实现带文字的圆形头像效果的使用技巧和注意事项,需要的朋友参考一下 下面就来实现一下这种效果 圆形头像的绘制 先来看一下效果图 分析一下: 1、首先是需要画带有背景色的圆形头像 2、然后是需要画文字 3、文字是截取的字符串的一部分 4、不同的字符串,圆形的背景色是不一样的 5、对
本文向大家介绍iOS实现圆角箭头矩形的提示框,包括了iOS实现圆角箭头矩形的提示框的使用技巧和注意事项,需要的朋友参考一下 先来看看我们见过的一些圆角箭头矩形的提示框效果图 一、了解CGContextRef 首先需要对 CGContextRef 了解, 作者有机会再进行下详细讲解, 这篇中简单介绍下, 方便后文阅读理解. 先了解 CGContextRef 坐标系 坐标系 举例说明 : 对于 商城类
本文向大家介绍jquery实现图片按比例缩放示例,包括了jquery实现图片按比例缩放示例的使用技巧和注意事项,需要的朋友参考一下