繪製虛線的UIView

2021-09-23 21:39:45 字數 2440 閱讀 8830

繪製虛線的uiview

cashapelayer配合貝塞爾曲線可以繪製曲線,筆者繼承了乙個uiview的子類,並將該子類的backedlayer替換為cashapelayer,以此來實現繪製虛線的效果.

繪製出各種虛線的效果圖:

實現的原始碼:

linedashview.h 與 linedashview.m

//

// linedashview.h

// dash

//// 繪製虛線用的view

//#import @inte***ce linedashview : uiview

@property (nonatomic, strong) nsarray *linedashpattern; // 線段分割模式

@property (nonatomic, assign) cgfloat endoffset; // 取值在 0.001 --> 0.499 之間

- (instancetype)initwithframe:(cgrect)frame

linedashpattern:(nsarray *)linedashpattern

endoffset:(cgfloat)endoffset;

@end

//

// linedashview.m

// dash

//// 繪製虛線用的view

//#import "linedashview.h"

@inte***ce linedashview ()

@end

@implementation linedashview

- (id)initwithframe:(cgrect)frame

return self;

}- (instancetype)initwithframe:(cgrect)frame

linedashpattern:(nsarray *)linedashpattern

endoffset:(cgfloat)endoffset

#pragma mark - 修改view的backedlayer為cashapelayer

+ (class)layerclass

#pragma mark - 改寫屬性的getter,setter方法

@synthesize linedashpattern = _linedashpattern;

- (void)setlinedashpattern:(nsarray *)linedashpattern

- (nsarray *)linedashpattern

@synthesize endoffset = _endoffset;

- (void)setendoffset:(cgfloat)endoffset

}- (cgfloat)endoffset

#pragma mark - 重寫了系統的backgroundcolor屬性

- (void)setbackgroundcolor:(uicolor *)backgroundcolor

- (uicolor *)backgroundcolor

@end

使用原始碼:

//

// rootviewcontroller.m

// dash

////

#import "rootviewcontroller.h"

#import "linedashview.h"

@inte***ce rootviewcontroller ()

@end

@implementation rootviewcontroller

- (void)viewdidload

@end

需要注意的地方:

修改了uiview的backedlayer

重寫了兩個屬性的setter方法

繪製粗虛線

以前很少畫虛線,因此不太關心繪製粗虛線該怎麼辦。最近需要用到這個功能,因此學習了一下,與大家共享。cpen類有兩個建構函式,我們經常用第乙個,而忽略了第二個。其實很多問到畫粗線時希望改變線頭的預設顯示方式,比如希望是圓弧頭而不是預設的方形頭等。都可以用這個建構函式定義的cpen物件來實現。這裡我主要...

canvas 繪製虛線

var mycanvas document.queryselector canvas 獲取上下文 var ctx mycanvas.getcontext 2d ctx.beginpath ctx.linewidth 5 ctx.moveto 200,200 ctx.lineto 450,200 ct...

Android豎虛線繪製

在android ui製作中,經常會需要一些線條作為分隔線,一般做個width或height為1dp的view就可以解決了,如果需要虛線,則需要在drawable目錄自定義xml進行繪製了,一般xml如下 然後在需要畫虛線的地方使用該drawable作為背景即可。不過如果需要一條豎虛線,就麻煩很多。...