我写了一个代码使用CoreText布局一些文本如下图所示.红色矩形是文本区域,黑色矩形对于图像或其他对象是空的.我使用kCTFrameClippingPathsAttributeName告诉CoreText,黑色矩形不会显示文本.
详细图片如下:
为什么有些文字会出现在这个位置?红色矩形和黑色矩形只有一个非常小的区域,大小只有1px宽,为什么文字出来?
右红色矩形框是(533,40,440,668),右小矩形框是(534,98,440,399).
这样的代码:
CGPathRef textArea;
// An array of clipping paths
NSMutableArray * 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 paths
CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(pos, 0), textAreaPath, (__bridge CFDictionaryRef)(optionsDict));
// Draw Frame
CTFrameDraw(frame, context);
最佳答案 看起来您的attributionString缺少段落样式信息.
我猜你是从NSString创建了NSAttributedString,并没有在属性字典中提供kCTParagraphStyleAttributeName键值.