1、首先先將自定義的view和進度條的值關聯起來
- (ibaction)progresschange:(uislider *)sender
2、drawrect方法裡畫弧線
cgfloat radius = rect.size.width / 2;
cgpoint center = cgpointmake(rect.size.width/2, rect.size.height/2);
//-m_pi_2由3點鐘方向調整到12點鐘方向
cgfloat
end = -m_pi_2 + self.progress * m_pi * 2;
uibezierpath *bezier = [uibezierpath
bezierpathwitharccenter:center radius:radius-2
startangle:-m_pi_2
endangle:
endclockwise:
yes];
[bezier stroke];
3、重寫屬性setter方法,使其弧線隨著進度條的值變化
-(void)setprogress:(cgfloat)progress
此時就完成了簡單的環形進度條
完整**:
#import "drawprogressvc.h"
@inte***ce
drawprogressview
:uiview
@property (nonatomic,assign) cgfloat progress;
@end
@implementation
drawprogressview
-(void)setprogress:(cgfloat)progress
//不能手動呼叫drawrect方法,因為只有在drawrect裡才能拿到上下文,圖形上下文只能由系統建立
- (void)drawrect:(cgrect)rect
@end
@inte***ce
drawprogressvc ()
@property (weak, nonatomic) iboutlet
uilabel *valuelabel;
@property (weak, nonatomic) iboutlet
drawprogressview *progressview;
@end
@implementation
drawprogressvc
- (void)viewdidload
- (ibaction)progresschange:(uislider *)sender
- (void)didreceivememorywarning
@end
最後,附上相關的demo,git: 環形進度條
在專案中做廣告頁,需要乙個5s倒計時的進度條。就用了calayer寫了乙個簡單的進度條。直接上 import inte ce circularprogressview uiview void start void stop import circularprogressview.h import i...
環形進度條
先上效果圖 不多。直接貼 html 0 css body box rotate left right center popu left before left after input radius bg radius dot radius dot before radius dot before s...
環形進度條
先上效果圖 設定進度 param progress public void setprogress int progress 得到 circularprogressbar 物件,用來設定其他的一些屬性 return public circularprogressbar getcircularprog...