1

コアグラフィックを使って色々な形の吹き出しを作っています。

しかし、吹き出しの作り方がわからない。

長方形から角丸長方形を作りました。同じ方法を使用しますか

思考バブルを作るか、他の方法はありますか?

4

1 に答える 1

4

これを最初のガイダンスとして使用してから、それに基づいて構築できると思います。

iPhoneでプログラムで楕円形の吹き出しを描く方法は?

その投稿からのsamfu_1の回答は次のとおりです

私はそれを2回繰り返します。最初にコンテキストを取得し、パスを開始します。楕円を塗りつぶしてから、三角形を 3 本の線で囲むカスタム パスを塗りつぶします。私は次の寸法を想定しました:幅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 シミュレーターでこれが生成されます。

ここに画像の説明を入力

この 2 番目のコード例は、上で作成したものとほとんど同じです。インスタンス化するときに 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);
 }

ここに画像の説明を入力

編集:

また、この投稿でブラッド・ラーソンの回答を参照することもできます

iPhoneで「吹き出し」を描く方法は?

これがお役に立てば幸いです。

さらにサポートが必要な場合はお知らせください。

于 2012-04-08T06:00:17.050 に答える