Siri聊天泡泡颜色在iOS中

我尝试在核心graphics中创buildSiri聊天泡泡。 我正处于一个可以绘制形状的阶段。 我被卡在这里的颜色。 Wanaa获取边框颜色和填充颜色代码。 这是我迄今为止所做的。

- (void)drawInContext:(CGContextRef)context { CGRect rect = gradientRectFrame; CGFloat radius = 30; CGFloat originBufferX = 0.0; CGFloat originBufferY = 0.0; CGFloat rightAngleTriangleWidth = 20.0; CGFloat rightAngleTriangleHeight = 20.0; CGFloat fullRectWidth = rect.size.width; CGFloat fullRectHeight = rect.size.height; CGPoint pointZero = CGPointMake(originBufferX, fullRectHeight); CGPoint pointOne = CGPointMake(originBufferX + rightAngleTriangleWidth, fullRectHeight - rightAngleTriangleHeight); CGPoint pointTwo = CGPointMake(originBufferX + rightAngleTriangleWidth, radius + originBufferY); CGPoint pointThree = CGPointMake(originBufferX + fullRectWidth - radius, 0 + originBufferY); CGPoint pointFour = CGPointMake(fullRectWidth, originBufferY + fullRectHeight - radius); CGContextSetRGBFillColor(context, 105/255, 105/255, 105/255, 0.5); CGContextSetLineWidth(context, 2.0); CGContextMoveToPoint(context, pointZero.x, pointZero.y); CGContextAddLineToPoint(context, pointOne.x, pointOne.y); CGContextAddLineToPoint(context, pointTwo.x, pointTwo.y); CGContextAddArc(context, rightAngleTriangleWidth + radius, originBufferY + radius, radius, M_PI, -M_PI_2, 0); CGContextAddLineToPoint(context, pointThree.x, pointThree.y); CGContextAddArc(context, fullRectWidth - radius, originBufferY + radius, radius, -M_PI_2, 0.0f, 0); CGContextAddLineToPoint(context, pointFour.x, pointFour.y); CGContextAddArc(context, fullRectWidth - radius, originBufferY + fullRectHeight - radius, radius, 0.0f, M_PI_2, 0); CGContextAddLineToPoint(context, pointZero.x, pointZero.y); CGContextFillPath(context); CGContextSetRGBStrokeColor(context, 50/255, 50/255, 50/255, 0.5); 

// CGContextSetRGBStrokeColor(context,1.0,0.0,0.0,1.0);

 CGContextStrokePath(context); 

}

聊天泡泡

在这里输入图像说明

更新的代码:我现在使用CGPath而不是CGContenxt重新绘制我的path后,我填补了我的path。 这是新的代码。 虽然,我的笔画颜色还不是很接近..

 - (void)drawInContext:(CGContextRef)context { CGRect rect = gradientRectFrame; CGFloat radius = 20; CGFloat originBufferX = 0.0; CGFloat originBufferY = 0.0; CGFloat rightAngleTriangleWidth = 20.0; CGFloat rightAngleTriangleHeight = 20.0; CGFloat fullRectWidth = rect.size.width; CGFloat fullRectHeight = rect.size.height; CGPoint pointZero = CGPointMake(originBufferX, fullRectHeight); CGPoint pointOne = CGPointMake(originBufferX + rightAngleTriangleWidth, fullRectHeight - rightAngleTriangleHeight); CGPoint pointTwo = CGPointMake(originBufferX + rightAngleTriangleWidth, radius + originBufferY); CGPoint pointThree = CGPointMake(originBufferX + fullRectWidth - radius, 0 + originBufferY); CGPoint pointFour = CGPointMake(fullRectWidth, originBufferY + fullRectHeight - radius); CGContextSetRGBStrokeColor(context, 0.8, 0.8, 0.8, 0.3); CGMutablePathRef path = CGPathCreateMutable(); CGPathMoveToPoint(path, NULL, pointZero.x, pointZero.y); CGPathAddLineToPoint(path, NULL, pointOne.x, pointOne.y); CGPathAddLineToPoint(path, NULL, pointTwo.x, pointTwo.y); CGPathAddArc(path, NULL, rightAngleTriangleWidth + radius, originBufferY + radius, radius, M_PI, -M_PI_2, 0); CGPathAddLineToPoint(path, NULL, pointThree.x, pointThree.y); CGPathAddArc(path, NULL, fullRectWidth - radius, originBufferY + radius, radius, -M_PI_2, 0.0f, 0); CGPathAddLineToPoint(path, NULL, pointFour.x, pointFour.y); CGPathAddArc(path, NULL, fullRectWidth - radius, originBufferY + fullRectHeight - radius, radius, 0.0f, M_PI_2, 0); CGPathAddLineToPoint(path, NULL, pointZero.x, pointZero.y); CGContextSaveGState(context); CGContextAddPath(context, path); CGContextSetLineWidth(context, 2.0f); CGContextSetRGBFillColor(context, 1.0f, 1.0f, 1.0f, 0.1f); CGContextFillPath(context); CGContextAddPath(context, path); CGContextStrokePath(context); } 

在这里输入图像说明

填充颜​​色大多为白色,不透明度约为10%。 所以原来的背景(像图案一样的织物)闪耀,变得更加明亮。 边框颜色也是白色的,但是不透明度约为30%。

此外,在边界的右侧和底部还有轻微的阴影。

对于颜色,你大概需要:

 CGContextSaveGState(context); CGContextSetShadow(context, CGSizeMake(-15f, -20f), 1.0f); CGContextSetLineWidth(context, 2.0f); CGContextSetRGBFillColor(context, 1.0f, 1.0f, 1.0f, 0.1f); CGContextFillPath(context); CGContextRestoreGState(context); CGContextSetRGBStrokeColor(context, 1.0f, 1.0f, 1.0f, 0.3f); CGContextStrokePath(context);