将文本绘制成椭圆形

时间:2012-07-11 12:21:12

标签: iphone objective-c ios

我正跳进去。

我正在绘制一个带有UIBezierPath的讲话泡泡,泡泡很好,并且按照我的预期工作。问题是我如何在讲话泡泡中添加文字以使其保留在UIBezierPath内。我没有绘制文字的经验,而且我很难想出可能的解决方案。

我试图在泡泡中插入一个textview,但解决方案效果不好,我想使用更多的语音泡泡。使用textview我只能使用矩形形状,我想从上到下填充气泡,并使用中间的完整宽度。

任何帮助和建议都会受到很多关注。

enter image description here

1 个答案:

答案 0 :(得分:3)

好的,我终于想出了如何在bezierpath上绘制/渲染文本,可以通过获取CGPath并使用核心文本来完成。我做过这种方法。

-(void)drawText:(NSString *)text {
    CGContextRef myContext = UIGraphicsGetCurrentContext(); 

    CGContextSaveGState(myContext);

    CGContextTranslateCTM(myContext, 0.0f, self.frame.size.height);
    CGContextScaleCTM(myContext, 1.0f, -1.0f);

    CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)attString); // 7-2
    CTFrameRef theFrame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, [attString length]), path, NULL); // 8-2

    CTFrameDraw(theFrame, myContext); // 11-2
    CGContextRestoreGState(myContext);
}

我跟随本教程,女巫很优秀。 http://invasivecode.tumblr.com/core-text

现在我只需要弄清楚如何计算bezierpath的大小以包含所有文本,并弄清楚如何将bezierpath和核心文本一起移动,它们在不同的坐标系上运行并给我一切问题。所以,如果有人有这方面的经验,我全都听见了!

最诚挚的问候 的Morten