【问题标题】:turning the corners of CGRect round like with UIView像使用 UIView 一样转动 CGRect 的角
【发布时间】:2014-01-14 03:12:53
【问题描述】:

我有这个功能,基本上是在给定图像下方添加给定文本,我希望使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;
}

【问题讨论】:

    标签: uibezierpath cgrect uigraphicscontext


    【解决方案1】:

    您的图像上下文是当前上下文,因此只需使用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];
    

    随意玩弄这里的数字;例如,您可能喜欢不同的圆角半径。实验!

    【讨论】:

    • 你能帮我写代码吗?我要删除 CGRect 吗?
    • CGRect 只是一个路径。我的意思是,使用不同的路径。你说的是CGContextFillRect。这绘制了一个填充的矩形。我建议您改为绘制一个实心圆角矩形。
    猜你喜欢
    • 2014-12-22
    • 1970-01-01
    • 2010-10-03
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 2012-09-14
    相关资源
    最近更新 更多