我正在使用核心图形制作各种形状的气泡。
但是,我不确定如何制造思想泡沫。
我从矩形制作了圆角矩形。我是否使用相同的方法
做一个思想泡泡还是有其他方法?
我认为您可以将其用作初始指导,然后以此为基础:
这是samfu_1对该帖子的回答
我会在两次迭代中完成。首先获取上下文并开始一条路径。填充一个椭圆,然后填充一个自定义路径,该路径用三条线包围一个三角形。我假设以下尺寸:70 宽,62 高。在 UIView 的子类中覆盖 draw rect 并在子类 UIViewController 中实例化:
-(void)drawRect:(CGRect)rect { CGContextRef ctx = UIGraphicsGetCurrentContext(); CGContextSetRGBFillColor(ctx, 0.0, 0.0, 1.0, 1.0); CGContextFillEllipseInRect(ctx, CGRectMake(0.0, 0.0, 70.0, 50.0)); //oval shape CGContextBeginPath(ctx); CGContextMoveToPoint(ctx, 8.0, 40.0); CGContextAddLineToPoint(ctx, 6.0, 50.0); CGContextAddLineToPoint(ctx, 18.0, 45.0); CGContextClosePath(ctx); CGContextFillPath(ctx); }
当在灰色背景下添加时,在 iPhone 模拟器中生成:
第二个代码示例将几乎复制您在上面生成的内容。我使用灵活的尺寸实现了这一点,当你实例化它时可以提供给 UIView 框架。本质上,对话气泡的白色部分是用黑色笔划绘制的。
-(void)drawRect:(CGRect)rect { CGContextRef ctx = UIGraphicsGetCurrentContext(); CGRect aRect = CGRectMake(2.0, 2.0, (self.bounds.size.width * 0.95f), (self.bounds.size.width * 0.60f)); // set the rect with inset. CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0); //white fill CGContextSetRGBStrokeColor(ctx, 0.0, 0.0, 0.0, 1.0); //black stroke CGContextSetLineWidth(ctx, 2.0); CGContextFillEllipseInRect(ctx, aRect); CGContextStrokeEllipseInRect(ctx, aRect); CGContextBeginPath(ctx); CGContextMoveToPoint(ctx, (self.bounds.size.width * 0.10), (self.bounds.size.width * 0.48f)); CGContextAddLineToPoint(ctx, 3.0, (self.bounds.size.height *0.80f)); CGContextAddLineToPoint(ctx, 20.0, (self.bounds.size.height *0.70f)); CGContextClosePath(ctx); CGContextFillPath(ctx); CGContextBeginPath(ctx); CGContextMoveToPoint(ctx, (self.bounds.size.width * 0.10), (self.bounds.size.width * 0.48f)); CGContextAddLineToPoint(ctx, 3.0, (self.bounds.size.height *0.80f)); CGContextStrokePath(ctx); CGContextBeginPath(ctx); CGContextMoveToPoint(ctx, 3.0, (self.bounds.size.height *0.80f)); CGContextAddLineToPoint(ctx, 20.0, (self.bounds.size.height *0.70f)); CGContextStrokePath(ctx); }
编辑:
您也可以在这篇文章中参考Brad Larson的回答
希望这对您有所帮助。
如果您需要更多帮助,请告诉我。