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. 这是一行代码(好吧,如果您计算设置填充颜色,则为两行):

[[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 回答