ios – 为什么使用CoreText渲染文本布局,文本可以在1px宽度路径中显示?

ios – 为什么使用CoreText渲染文本布局,文本可以在1px宽度路径中显示?,第1张

概述我写了一个代码使用CoreText布局一些文本如下图所示.红色矩形是文本区域,黑色矩形对于图像或其他对象是空的.我使用kCTFrameClippingPathsAttributeName告诉CoreText,黑色矩形不会显示文本. 详细图片如下: 为什么有些文字会出现在这个位置?红色矩形和黑色矩形只有一个非常小的区域,大小只有1px宽,为什么文字出来? 右红色矩形框是(533,40,440,668 我写了一个代码使用CoreText布局一些文本如下图所示.红色矩形是文本区域,黑色矩形对于图像或其他对象是空的.我使用kCTFrameClipPingPathsAttributename告诉CoreText,黑色矩形不会显示文本.

详细图片如下:

为什么有些文字会出现在这个位置?红色矩形和黑色矩形只有一个非常小的区域,大小只有1px宽,为什么文字出来?

右红色矩形框是(533,40,440,668),右小矩形框是(534,98,399).

这样的代码:

CGPathref textArea; // An array of clipPing pathsNSMutableArray * clipPingPaths = [NSMutableArray array];for (TNPageMedium *medium in self.media) {    NSDictionary *clipPingPathDict = @{(Nsstring *)kCTFramePathClipPingPathAttributename:(__brIDge ID)path};    [clipPingPaths addobject:clipPingPathDict];}NSDictionary  *optionsDict = @{(Nsstring*)kCTFrameClipPingPathsAttributename : clipPingPaths};// create frame using texAreaPath,an optionDictionary contains clipPing pathsCTFrameRef frame = CTFramesetterCreateFrame(framesetter,CFRangeMake(pos,0),textAreaPath,(__brIDge CFDictionaryRef)(optionsDict));// Draw FrameCTFrameDraw(frame,context);
解决方法 看起来您的attributionString缺少段落样式信息.

我猜你是从Nsstring创建了NSAttributedString,并没有在属性字典中提供kCTParagraphStyleAttributename键值.

总结

以上是内存溢出为你收集整理的ios – 为什么使用CoreText渲染文本布局,文本可以在1px宽度路径中显示?全部内容,希望文章能够帮你解决ios – 为什么使用CoreText渲染文本布局,文本可以在1px宽度路径中显示?所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1035962.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存