1

UI 要件は次のとおりです。1 -- 2 列のテーブルを表示する必要があります。最初の列に画像を表示し、2 番目の列にテキストを表示する必要があります。2 -- 透明にする必要があるため、NSView の背景を表示する必要があります。

私のコードは以下のように書かれています、

次のメソッドをオーバーライドする NSTableView をサブクラス化します

-(void)awakeFromNib
{

    [[self enclosingScrollView] setDrawsBackground: NO];
    [[self enclosingScrollView] setBorderType:NSNoBorder];

}

- (BOOL)isOpaque {

    return NO;
} 
- (void)drawRect:(NSRect)drawRect
{
    [super drawRect: drawRect];
}

以下のようにテーブルインスタンスを作成する私の見解では

@interface MyView : CommUICustomView {
    CustomTableView *myTableView;
}

// 実装

- (void)InitContactTable 
{

    NSRect          scrollFrame = [self bounds];
    NSScrollView*   scrollView  = [[[NSScrollView alloc] initWithFrame:scrollFrame] autorelease];

    [scrollView setBorderType:NSNoBorder];
    [scrollView setHasVerticalScroller:YES];
    [scrollView setHasHorizontalScroller:NO];
    [scrollView setAutohidesScrollers:YES];
    [scrollView setDrawsBackground: NO];

    NSRect          clipViewBounds  = [[scrollView contentView] bounds];
    pOnLineCTView       = [[[CommUITableView alloc] initWithFrame:clipViewBounds] autorelease];

    //[pOnLineCTView setBackGroundImageByName:@"largegears.png"];


    NSTableColumn*  firstColumn     = [[[NSTableColumn alloc] initWithIdentifier:@"firstColumn"] autorelease];
    [[firstColumn dataCell] setDrawsBackground:NO];

    [myTableView  addTableColumn:firstColumn];

    NSTableColumn*  secondColumn        = [[[NSTableColumn alloc] initWithIdentifier:@"secondColumn"] autorelease];
    [[secondColumn dataCell] setDrawsBackground:NO];

    [myTableView  addTableColumn:secondColumn];

    [myTableView setDataSource:self];
    [scrollView setDocumentView:pOnLineCTView];

    [scrollView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];

    [self addSubview:scrollView];

    [self setAutoresizesSubviews:YES];


}

上記のコードの出力は、 NoofRow を 0 に設定した場合でも、白い背景を持つテーブルです。つまり、白い背景が描画されます。次に、CustomTableView の drawRect メソッドをオーバーライドして TableView に Background を実装しようとしましたが、助けになり、出力は Background です画像、透明を実現して親ビューの背景を表示するために、白い色でペイントされているようですが、列またはセルのために白い色が描画されるようです。列のセルにバックゴーンドを描画しないように指示しようとしましたが、うまくいきませんでした。誰でも私に提案できる他の方法。

4

1 に答える 1

0

その作業、私は drawBackgroundInClipRect もオーバーライドしていましたが、このメソッドにコメントした後、期待される出力を見ることができました。

これで、表のセル データが表示されている透明な背景が表示されます。

于 2011-01-18T11:25:30.007 に答える