1

次のサンプルのようにNSCellを描画する方法があるかどうか知りたいです。アイデアは、同じ列、3行に収まるようにすることです。最初の行はタイトルに十分なスペースがあり、残りは2列です。

TITLE_ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ _ _1 _ _ _
_
_ DATA_TITLE_4:DATA_VALUE_2

ノート:

  • 「___」は3つのスペースであると想定されていました(それらを表現する方法がわかりません)。
  • 列のタイトルと値の長さは異なることに注意してください。

前もって感謝します。

4

2 に答える 2

1

これを実行できる標準の NSCell はありませんが、NSCell クラスの 1 つの独自のサブクラスを記述して、これを実行させることができます。コントロールとセルのプログラミングのトピックを参照してください。

于 2011-07-05T09:10:17.643 に答える
1

結局のところ、NSCell をサブクラス化すると、フレーム内に必要な数のセルを追加できます。drawInteriorWithFrame メソッドをオーバーライドして NSCell を割り当て、セルのフレーム内の任意の場所に描画するだけです。

簡単な例を次に示します。

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
    NSRect modifiedFrame = NSMakeRect(cellFrame.origin.x +10, cellFrame.origin.y +10, cellFrame.size.width -10, cellFrame.size.height -10);
    NSTextFieldCell *modifiedCell = [[NSTextFieldCell alloc] initTextCell:@"TEST"];
    [modifiedCell drawWithFrame:modifiedFrame inView:controlView];   
    [super drawInteriorWithFrame:cellFrame inView:controlView];    
}
于 2011-07-07T13:27:27.937 に答える