gpt4 book ai didi

objective-c - NSTableCellView 填充

转载 作者:太空狗 更新时间:2023-10-30 03:44:50 24 4
gpt4 key购买 nike

如何向 NSTableCellView 添加填充?

我希望内容具有 10px 的填充,类似于您在纯 HTML 中的做法。 (所有面)。文本应在中间垂直居中。

目前我正在 NSTextFieldCell 的子类中执行此操作。但这似乎无法正常工作。

当我编辑文本时,编辑文本字段不使用文本字段单元格中的填充。

图 2: Check image

Check image

这是我目前的代码,(NSTextFieldCell 的子类)

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
NSRect titleRect = [self titleRectForBounds:cellFrame];

NSAttributedString *aTitle = [self attributedStringValue];
if ([aTitle length] > 0) {
[aTitle drawInRect:titleRect];
}
}

- (NSRect)titleRectForBounds:(NSRect)bounds
{
NSRect titleRect = bounds;

titleRect.origin.x += 10;
titleRect.origin.y = 2;

NSAttributedString *title = [self attributedStringValue];
if (title) {
titleRect.size = [title size];
} else {
titleRect.size = NSZeroSize;
}

// We don't want the width of the string going outside the cell's bounds
CGFloat maxX = NSMaxX(bounds);
CGFloat maxWidth = maxX - NSMinX(titleRect);
if (maxWidth < 0) {
maxWidth = 0;
}

titleRect.size.width = MIN(NSWidth(titleRect), maxWidth);

return titleRect;
}

最佳答案

下面是一些获取填充的选项。

早些时候,我在获取 NSAttributedString 的正确边界框高度时遇到了一些问题。我不记得我是如何解决它们的,但有 some discussions关于这件事。

想法#1:

使用NSTableView's intercell spacing .它也可以在 Interface Builder 中的 TableView 的大小选项卡中使用。查找单元格间距。

想法#2:

编辑界面时:

  • 除非您需要其他东西,否则请使用 Apple 提供的文本或图像和文本表格单元格 View 。
  • 使用大小选项卡更改表格 View 内表格单元格 View 的高度。
  • 重新定位表格单元格 View 中的文本字段。

想法#3:

使用自定义单元格。

  • 您可以通过覆盖 -[NSTextFieldCell editWithFrame:inView:editor:delegate:event:] 来更改字段编辑器的位置。还有 -[NSTextFieldCell setUpFieldEditorAttributes]。我找到了 this sample code 很有用。
  • 如果增加单元格的高度,则有a couple of ways使 NSTextFieldCell 绘制垂直居中的文本。

关于objective-c - NSTableCellView 填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27134831/

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