iOS 自定義label

上面是xib創(chuàng)建出來的彤路,下面是純代碼創(chuàng)建的米同。

CULabel.h

@interface CULabel : UILabel
@property (nonatomic, assign) CGFloat radius;
@property (nonatomic, assign) CGFloat triangleHeight;
@property (nonatomic, assign) CGFloat triangleWidth;
@end

CULabel.mm

@interface CULabel()
@property (nonatomic, strong) CAShapeLayer *maskLayer;
@property (nonatomic, strong) UIBezierPath *borderPath;
@end

@implementation CULabel


- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self setup];
    }
    return self;
}

- (instancetype)initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];
    if (self) {
        [self setup];
    }
    return self;
}

-(void)setup {
    self.maskLayer = [CAShapeLayer layer];
    [self.layer setMask:self.maskLayer];
    self.borderPath = [UIBezierPath bezierPath];
}

// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    // Drawing code
    [super drawRect:rect];
    
    CGFloat viewWidth = self.bounds.size.width;
    CGFloat viewHeigt = self.bounds.size.height;
    
    CGFloat radius = self.radius;
    CGFloat triangleWidth = self.triangleWidth;
    CGFloat triangleHeight = self.triangleHeight;
    
    [self.borderPath moveToPoint:CGPointMake(0, radius)];
    [self.borderPath addQuadCurveToPoint:CGPointMake(radius, 0) controlPoint:CGPointMake(0, 0)];
    [self.borderPath addLineToPoint:CGPointMake(viewWidth-radius, 0)];
    [self.borderPath addQuadCurveToPoint:CGPointMake(viewWidth, radius) controlPoint:CGPointMake(viewWidth, 0)];
    [self.borderPath addLineToPoint:CGPointMake(viewWidth, viewHeigt)];
    [self.borderPath addLineToPoint:CGPointMake(viewWidth/2.0+triangleWidth/2.0, viewHeigt)];
    [self.borderPath addLineToPoint:CGPointMake(viewWidth/2.0, viewHeigt-triangleHeight)];
    [self.borderPath addLineToPoint:CGPointMake(viewWidth/2.0-triangleWidth/2.0, viewHeigt)];
    [self.borderPath addLineToPoint:CGPointMake(0, viewHeigt)];
    [self.borderPath addLineToPoint:CGPointMake(0, radius)];
    
    self.maskLayer.path = self.borderPath.CGPath;
}


-(void)setRadius:(CGFloat)radius {
    _radius = radius;
    [self setNeedsDisplay];
}
-(void)setTriangleWidth:(CGFloat)triangleWidth {
    _triangleWidth = triangleWidth;
    [self setNeedsDisplay];
}
-(void)setTriangleHeight:(CGFloat)triangleHeight {
    _triangleHeight = triangleHeight;
    [self setNeedsDisplay];
}

@end

如何使用宙项?

#import "CULabel.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet CULabel *clabel;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    CULabel *label = [[CULabel alloc] initWithFrame:CGRectMake(40, 100, 200, 40)];
    [self.view addSubview:label];
    label.backgroundColor = [UIColor purpleColor];
    label.text = @"賣家推薦 * 新品推薦";
    label.textColor = [UIColor whiteColor];
    label.textAlignment = NSTextAlignmentCenter;
    label.font = [UIFont fontWithName:@"" size:15];
    label.radius = 10;
    label.triangleWidth = 10.0;
    label.triangleHeight = 5.0;
    
    self.clabel.radius = 10;
    self.clabel.triangleWidth = 10.0;
    self.clabel.triangleHeight = 5.0;
}

@end
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鲸阻,一起剝皮案震驚了整個(gè)濱河市切诀,隨后出現(xiàn)的幾起案子诬留,更是在濱河造成了極大的恐慌斜纪,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件文兑,死亡現(xiàn)場離奇詭異盒刚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)绿贞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門因块,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人籍铁,你說我怎么就攤上這事涡上≈憾希” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵吩愧,是天一觀的道長芋酌。 經(jīng)常有香客問我,道長雁佳,這世上最難降的妖魔是什么脐帝? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮糖权,結(jié)果婚禮上堵腹,老公的妹妹穿的比我還像新娘。我一直安慰自己星澳,他們只是感情好疚顷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著募判,像睡著了一般荡含。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上届垫,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天释液,我揣著相機(jī)與錄音,去河邊找鬼装处。 笑死误债,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的妄迁。 我是一名探鬼主播寝蹈,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼登淘!你這毒婦竟也來了箫老?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤黔州,失蹤者是張志新(化名)和其女友劉穎耍鬓,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體流妻,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡牲蜀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绅这。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涣达。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出度苔,到底是詐尸還是另有隱情匆篓,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布林螃,位于F島的核電站奕删,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏疗认。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一伏钠、第九天 我趴在偏房一處隱蔽的房頂上張望横漏。 院中可真熱鬧,春花似錦熟掂、人聲如沸缎浇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽素跺。三九已至,卻和暖如春誉券,著一層夾襖步出監(jiān)牢的瞬間指厌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工踊跟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留踩验,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓商玫,卻偏偏與公主長得像箕憾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子拳昌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 最近項(xiàng)目開發(fā)中遇到要復(fù)制Label上的文字的需求袭异,經(jīng)過查閱資料整理開發(fā)。 下面是自己借鑒網(wǎng)上各位大神的方法實(shí)現(xiàn)自己...
    短發(fā)控丶kk閱讀 1,672評論 2 0
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,140評論 30 470
  • 在寫文章之前,首先問大家一個(gè)問題:聽和說哪個(gè)更重要刻像?估計(jì)大部分人都會(huì)不假思索地回答當(dāng)然是說更重要畅买!沒錯(cuò),說细睡,是重要...
    Irinaa閱讀 642評論 2 25
  • 因?yàn)楸镜刈兞扛瘮?shù)參數(shù)變量同名
    SunnyLeong閱讀 181評論 0 15
  • 2018年3月30日張紅 今天我班的學(xué)生值日的時(shí)候谷羞,看到一個(gè)同學(xué)有不文明的行為,上前制止,結(jié)果被抓傷湃缎。一天也是比較...
    啊呦a7_94閱讀 149評論 0 0