2

の色を変更できますかNSTableView's border。ポインターの灰色の線。ありがとう。

ここに画像の説明を入力

4

2 に答える 2

7

をサブクラス化する必要がありますNSScrollViewNSScrollView通常は描画を行わず、おそらくその子ビューとの奇妙な相互作用があります。次のようなものを置くことをお勧めします

- (void)drawRect:(NSRect)dirtyRect {
    [super drawRect:dirtyRect];
    // We're going to be modifying the state for this, 
    // so allow it to be restored later
    [NSGraphicsContext saveGraphicsState];

    // Choose the correct color; isFirstResponder is a custom     
    // ivar set in becomeFirstResponder and resignFirstResponder
    [[NSColor redColor]set];

    // Create two rects, one slightly outset from the bounds,
    // one slightly inset
    NSRect bounds = [self bounds];
    NSRect innerRect = NSInsetRect(bounds, 2, 2);
    NSRect outerRect = NSMakeRect(bounds.origin.x - 2, 
                                  bounds.origin.y - 2,
                                  bounds.size.width + 4,
                                  bounds.size.height + 4);

    // Create a bezier path using those two rects; this will
    // become the clipping path of the context
    NSBezierPath * clipPath = [NSBezierPath bezierPathWithRect:outerRect];
    [clipPath appendBezierPath:[NSBezierPath bezierPathWithRect:innerRect]];

    // Change the current clipping path of the context to 
    // the enclosed area of clipPath; "enclosed" defined by 
    // winding rule. Drawing will be restricted to this area.
    // N.B. that the winding rule makes the order that the
    // rects were added to the path important.
    [clipPath setWindingRule:NSEvenOddWindingRule];
    [clipPath setClip];
    // Fill the rect; drawing is clipped and the inner rect
    // is not drawn in
    [[NSBezierPath bezierPathWithRect:outerRect] fill];
    [NSGraphicsContext restoreGraphicsState];
}
于 2013-06-12T10:48:12.997 に答える
1

スクロールビューにボーダーを設定する簡単な方法

let scrollView = NSScrollView()
scrollView.contentView.wantsLayer = true
scrollView.contentView.layer?.borderColor = NSColor.black
scrollView.contentView.layer?.cornerRadius = 6
于 2019-03-27T07:20:15.483 に答える