gpt4 book ai didi

objective-c - 为 NSTableView 单元格绘制带有边框和背景的文本

转载 作者:行者123 更新时间:2023-12-03 17:11:39 25 4
gpt4 key购买 nike

我有一个基于单元格的表格 View ,我想在此表格 View 中显示某种标签,最好不必使用基于 View 的表格 View 。

是否有一种优雅的方式来实现类似此处示例(HTML)的效果,最好还具有背景颜色。

Example

最佳答案

如果您想坚持使用基于单元格的表格 View ,您可以子类化 NSCell 并覆盖:

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView*)controlView
{
NSRect insetRect = NSInsetRect(cellFrame, 2.0, 2.0);
NSBezierPath* path = [NSBezierPath bezierPathWithRoundedRect:insetRect xRadius:3.0 yRadius:3.0];
[path stroke];
[[NSColor whiteColor] setFill];
[path fill];
[[NSColor brownColor] setStroke];
[path stroke];
NSMutableAttributedString* content = [[NSMutableAttributedString alloc] initWithString:@"DUPLICATE"];
NSFontManager* fontManager = [NSFontManager sharedFontManager];
NSFont* font = [fontManager fontWithFamily:@"Verdana"
traits:NSBoldFontMask
weight:0
size:13.0];
NSDictionary* attributes = @{NSFontAttributeName:font,
NSForegroundColorAttributeName:[NSColor brownColor]};
[content setAttributes:attributes range:NSMakeRange(0, [content length])];
[content setAlignment:NSCenterTextAlignment range:NSMakeRange(0, [content length])];
[content drawInRect:cellFrame];
}

上面的代码生成一个与您的按钮有点相似的单元格(您必须自己调整字体、颜色、线条样式等):

enter image description here

我还通过提供以下内容调整了 TableView 委托(delegate)中的行高度:

- (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row
{
return 24.0;
}

关于objective-c - 为 NSTableView 单元格绘制带有边框和背景的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23236703/

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