iOS 環形進度條

2021-08-02 10:28:25 字數 1565 閱讀 1338

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...