標籤:
本文是關於iOS代碼畫氣泡,手把手教你畫一個氣泡,其他形狀請讀者自行嘗試,希望大家玩的開心!
//// SpeechBubbleView.m// demo//// Created by mygame on 15/3/4.// Copyright (c) 2015年 mygame. All rights reserved.//#import "SpeechBubbleView.h"#import <CoreGraphics/CoreGraphics.h>#define kPopupTriangleHeigh 12#define kPopupTriangleWidth 22#define kBorderOffset 0//0.5f@implementation SpeechBubbleView- (instancetype)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { self.backgroundColor = [UIColor purpleColor]; } return self;}- (void)drawRect:(CGRect)rect { [super drawRect:rect]; CGFloat viewW = rect.size.width; CGFloat viewH = rect.size.height; CGFloat strokeWidth = 1; CGFloat borderRadius = 10; CGFloat offset = strokeWidth + kBorderOffset; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetLineJoin(context, kCGLineJoinRound); // CGContextSetLineWidth(context, strokeWidth); // 設定畫筆寬度 CGContextSetStrokeColorWithColor(context, [UIColor lightGrayColor].CGColor); // 設定畫筆顏色 CGContextSetFillColorWithColor(context, [UIColor lightGrayColor].CGColor); // 設定填充顏色 // 畫三角形 /* ---\/ */
/* 畫紅色部分
*/ CGContextBeginPath(context); CGContextMoveToPoint(context, borderRadius+offset, viewH-kPopupTriangleHeigh-offset); CGContextAddLineToPoint(context, round((viewW-kPopupTriangleWidth)/ 2.0f) + offset, viewH-kPopupTriangleHeigh-offset); CGContextAddLineToPoint(context, round(viewW/2.0f), viewH-offset); CGContextAddLineToPoint(context, round((viewW+kPopupTriangleWidth)/2.0f)+offset, viewH-kPopupTriangleHeigh-offset); // 畫其餘部分
/*
*/ CGContextAddArcToPoint(context, viewW-offset, viewH-kPopupTriangleHeigh-offset, viewW-offset, kPopupTriangleHeigh+offset, borderRadius-strokeWidth); CGContextAddArcToPoint(context, viewW-offset, offset, viewW-borderRadius-offset, offset, borderRadius-strokeWidth); CGContextAddArcToPoint(context, offset, offset, offset, borderRadius+offset, borderRadius-strokeWidth); CGContextAddArcToPoint(context, offset, viewH-kPopupTriangleHeigh-offset, borderRadius+offset, viewH-kPopupTriangleHeigh-offset, borderRadius-strokeWidth); CGContextClosePath(context); CGContextDrawPath(context, kCGPathFillStroke);}@end
關於CGContextAddArcToPoint介面解釋請點擊這裡
iOS 畫氣泡(bubble)