4

下の図のようないくつかのテキストを使用してCoreTextレイアウトを使用するコードを作成しました。赤い長方形はテキスト領域で、黒い長方形は画像やその他のオブジェクトでは空です。私はkCTFrameClippingPathsAttributeNameTellCoreTextを使用して、黒い長方形はテキストを表示しないことを伝えます。

コアテキストテキストレイアウト

以下の詳細画像:

ここに画像の説明を入力してください

なぜこの位置にテキストが表示されるのですか?赤い長方形と黒い長方形の領域は非常に小さく、サイズは幅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);
4

1 に答える 1

2

attributedString段落スタイル情報が不足しているようです。

NSAttributedStringから作成したと思いますが、属性ディクショナリにKey-ValueをNSString提供していません。kCTParagraphStyleAttributeName

于 2012-11-26T13:19:58.570 に答える