HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 使用CoreText绘制时未显示NSTextAttachment图像大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
出于某种原因,当使用核心文本时,我无法获得要绘制的NSTextAttachment图像,尽管当NSAttributedString添加到UILabel时,相同的图像会显示正常.

在iOS上,此渲染将为NSTextAttachments提供空白空间,对于OS X,将为每个NSTextAttachment呈现占位符[OBjeCT]方形图像.为了使用COreText渲染图像,还需要做些什么吗?

渲染代码

CGFloat contextHeight = CGBitmapContextGetHeight(context);
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)_attributedString);
CGPathRef path = CGPathCreateWithRect(CGRectMake(rect.origin.x,contextHeight - rect.origin.y - rect.size.height,rect.size.width,rect.size.height),null);
CTFrameRef frame = CTFramesetterCreateFrame(framesetter,CFRangeMake(0,0),path,null);
CFRelease(framesetter);
CGPathRelease(path);
CGContextSaveGState(context);
CGContextSetTextMatrix(context,CGAffineTransformIdentity);
CGContextTranslateCTM(context,0.0f,contextHeight);
CGContextScaleCTM(context,1.0f,-1.0f);
CTFrameDraw(frame,context);
CGContextRestoreGState(context);
CFRelease(framE);

解决方法

原因很简单,NSTextAttachment仅适用于将NSAttributedString呈现为UIView / NSView.它不能用于渲染到常规CGContext中.

有两种方法可以解决问题:

>创建UILabel,CATextLayer或类似物,并将其渲染到图形上下文中.
>使用CTRunDelegate在文本中打空格,然后循环遍历要渲染的所有行,并手动将图像直接绘制到CGContext中.这里有详细介绍的方法https://www.raywenderlich.com/4147/core-text-tutorial-for-ios-making-a-magazine-app.如果沿着这条路走下去会有很多工作,但它确实有效.

大佬总结

以上是大佬教程为你收集整理的ios – 使用CoreText绘制时未显示NSTextAttachment图像全部内容,希望文章能够帮你解决ios – 使用CoreText绘制时未显示NSTextAttachment图像所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。