1

NSTabView をサブクラス化し、5 つの TabViewItem を追加しました。NSTabViewItem にタイトルと共にアイコンを追加したいと思いました。

- (void)drawLabel:(BOOL)shouldTruncateLabel inRect:(NSRect)tabRect

つまり、このメソッドをオーバーライドする場合、アイコンを描画して独自の文字列を作成する必要があります。

タイトルの設定には、次の方法を使用しています。

[pTabViewItem setLabel:pLabelTitle];

よろしく
ローハン

4

1 に答える 1

3

気にしないでください、次のコードは私にとってはうまくいきます、

- (void)drawLabel:(BOOL)shouldTruncateLabel inRect:(NSRect)tabRect{

    // do we have an image to draw
    NSImage *pImage = [pDelegate imageForCell];

    [[NSGraphicsContext currentContext] saveGraphicsState];
    NSAffineTransform* xform = [NSAffineTransform transform];
    [xform translateXBy:0.0 yBy: tabRect.size.height];
    [xform scaleXBy:1.0 yBy:-1.0];
    [xform concat]; 


    CGFloat x_Offset =0;
    if(pImage){
        [pImage drawInRect:NSMakeRect(tabRect.origin.x-8,-6,16, 16)fromRect:NSZeroRect
                 operation:NSCompositeSourceOver
                  fraction:1.0];
        x_Offset =  16;
    }
     [[NSGraphicsContext currentContext] restoreGraphicsState];

    [super drawLabel:shouldTruncateLabel inRect:tabRect];
}

変換する理由:
画像が反転して表示されていたので、変換する必要があります。

なぜオフセット: 変換後も、位置を調整して、タイトルの直前に見えるようにする必要があります。

みんな、私はタイトルを設定している間、

スペースを追加して、タイトルが画像に重ならないようにします。これが醜いアプローチであることは知っていますが、他の簡単な方法はありません。自分でテキストを描画する場合は、切り捨ても処理する必要があります。

質問を見て回答してくれた人に感謝します
敬具
ローハン

于 2011-03-28T12:49:57.317 に答える