1

NSTabViewItemテキスト付きのアイコンを追加したい。

drawLabel:inRect:メソッドのコードで私を助けてください。

- (id)initWithCoder:(NSCoder *)decoder
{
[super initWithCoder:decoder];

tabCell = [[NSBrowserCell alloc] initImageCell:[NSImage 
imageNamed:@"xyz"]];

[tabCell setLeaf:YES];
[tabCell setFont:[[self tabView] font]];
[tabCell setStringValue: [self label]];

return self;
}

- (void)drawLabel:(BOOL)shouldTruncateLabel inRect:(NSRect)tabRect
{
{ //  modify the rect a tad so the cell draws properly..
    tabRect.origin.y += 2;
    tabRect.size.width += 16;
}

[tabCell drawWithFrame:tabRect inView:[self tabView]];
}


- (NSSize)sizeOfLabel:(BOOL)shouldTruncateLabel
{
NSSize superSize = [super sizeOfLabel:shouldTruncateLabel];
NSImage *icon = [tabCell image];

superSize.width += [icon size].width-4;

return superSize;
}

にアイコンを追加できますNSTabViewItemが、サイズが大きいためにアイコンがタブからはみ出してしまいます。内に収まるようにアイコンのサイズを維持するにはどうすればよいTabViewItemですか?

4

3 に答える 3

1

よくわかりませんが、問題が解決した場合、同様のユースケースがあり、drawLabel を使用してその中に画像を追加しています。

コード スニペットを参照してください。

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


    NSImage *pImage = [self getImage];

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


    if(pImage){
        [pImage drawInRect:NSMakeRect(tabRect.origin.x-8,-6,16, 16)fromRect:NSZeroRect
                 operation:NSCompositeSourceOver
                  fraction:opacity];
    }
     [[NSGraphicsContext currentContext] restoreGraphicsState];
    [super drawLabel:shouldTruncateLabel inRect:tabRect];
    NSLog(@" Inside drawRect text (%@)",[self labeltitle]);

}
于 2015-10-29T10:31:49.130 に答える