gpt4 book ai didi

cocoa - 自定义 NSTableHeaderCell 以实现 NSTableView 的清晰背景

转载 作者:行者123 更新时间:2023-12-03 16:32:00 26 4
gpt4 key购买 nike

我遇到了关于带有自定义 NSTableHeaderCell 的 NSTableView 清晰背景的问题。当我调整表格列的大小时。

enter image description here

// The method for setting NSTableView in some place
// NSScrollView disabled Draw Background
- (void)setMainTableView:(NSTableView *)mainTableView {

_mainTableView = mainTableView;
[_mainTableView setBackgroundColor:[NSColor clearColor]];

[[_mainTableView tableColumns] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

NSString *columnTitle = [[obj headerCell] stringValue];
MyTableHeaderCell *myCell = [[MyTableHeaderCell alloc] initTextCell:columnTitle];
[obj setHeaderCell:myCell];
}];
}

// Overriding NSTableHeaderCell Method
- (void)drawWithFrame:(CGRect)cellFrame inView:(NSView *)view {

[[NSColor redColor] set];
NSFrameRect(cellFrame);

[super drawInteriorWithFrame:cellFrame inView:view];
}

最佳答案

+1 至拉杜

具体来说,对于任何关心的人..要在 Swift 中执行类似的操作,您可以执行以下操作:

final class MyTableHeaderCell : NSTableHeaderCell
{
required init?(coder aDecoder: NSCoder)
{
fatalError("init(coder:) has not been implemented")
}

override init(textCell: String)
{
super.init(textCell: textCell)
// you can also set self.font = NSFont(...) here, too!
}

override func drawWithFrame(cellFrame: NSRect, inView controlView: NSView)
{
super.drawWithFrame(cellFrame, inView: controlView) // since that is what draws borders
NSColor().symplyBackgroundGrayColor().setFill()
NSRectFill(cellFrame)
self.drawInteriorWithFrame(cellFrame, inView: controlView)
}

override func drawInteriorWithFrame(cellFrame: NSRect, inView controlView: NSView)
{
let titleRect = self.titleRectForBounds(cellFrame)
self.attributedStringValue.drawInRect(titleRect)
}
}

关于cocoa - 自定义 NSTableHeaderCell 以实现 NSTableView 的清晰背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19421314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com