繪製虛線的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作為背景即可。不過如果需要一條豎虛線,就麻煩很多。...