0

基本的に、特定の画像の下に特定のテキストを追加するこの機能があります。角を丸くしたいのですが、このコードでのtextRect使用方法を理解してもらえますかUIBezierPath

-(UIImage*) overlapText:(NSString*) p_text inImage:(UIImage*) p_image atPoint:(CGPoint) p_point
{
    p_point.y += p_image.size.height-5;

    UIFont *font = [UIFont boldSystemFontOfSize:11];
    UIGraphicsBeginImageContext(CGSizeMake(p_image.size.width+15,p_image.size.height+15));
    CGFloat imageX = (p_image.size.width+10)/2 - (p_image.size.width/2);
    [p_image drawInRect:CGRectMake(imageX,0,p_image.size.width,p_image.size.height)];

    CGRect textRect = CGRectMake(0, p_point.y, p_image.size.width+15, p_image.size.height+10);

    [[UIColor colorWithRed:(70/255.0) green:(70/255.0) blue:(70/255.0) alpha:1] set];
    CGContextFillRect(UIGraphicsGetCurrentContext(), textRect);


    [[UIColor whiteColor] set];
    [p_text drawInRect:textRect withFont:font lineBreakMode:NSLineBreakByTruncatingTail alignment:NSTextAlignmentCenter];


    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;
}
4

1 に答える 1

0

画像コンテキストは現在のコンテキストなので、 で丸みを帯びた四角形を構築し、bezierPathWithRoundedRect:cornerRadius:塗りつぶしの色を設定し、ベジェ パスを に伝えますfill。これは 1 行のコードです (塗りつぶしの色を設定する場合は 2 行です)。

[[UIColor colorWithRed:(70/255.0) green:(70/255.0) blue:(70/255.0) alpha:1] set];
[[UIBezierPath bezierPathWithRoundedRect:textRect cornerRadius:5] fill];

ここの数字で自由に遊んでください。たとえば、別のコーナー半径が必要な場合があります。実験!

于 2014-01-14T04:03:01.493 に答える