如何在iPhone中使用核心图形制作思想泡泡

时间:2012-04-08 05:39:07

标签: iphone ios

我正在使用核心图形制作各种形状的气泡。

然而,我不确定如何制造思想泡泡。

我从矩形中制作了圆角矩形。我是否使用相同的方法

制造思想泡泡还是有其他方法吗?

1 个答案:

答案 0 :(得分:4)

我认为您可以将此作为初步指导,然后以此为基础:

How to draw an oval speech bubble programmatically on iPhone?

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模拟器中生成此功能   背景:

     

enter image description here

     

这第二个代码示例几乎会复制您生成的内容   以上。我使用可提供的灵活尺寸实现了这一点   实例化它时到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);
 }
     

enter image description here

修改

此外,您可以参考 Brad Larson 在这篇文章中的答案

How to draw a "speech bubble" on an iPhone?

希望这会对你有所帮助。

如果您需要更多帮助,请与我联系。