Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何增加NSTableHeaderView的高度?_Objective C_Macos_Cocoa_Nstableview_Nstableheaderview - Fatal编程技术网

Objective c 如何增加NSTableHeaderView的高度?

Objective c 如何增加NSTableHeaderView的高度?,objective-c,macos,cocoa,nstableview,nstableheaderview,Objective C,Macos,Cocoa,Nstableview,Nstableheaderview,我需要实现一个具有特定大小和渐变的headerview。我必须在headerview的某些单元格中插入图像。尝试使用以下代码为headerview创建单元格,但无法自定义headerview [[tableColumn headerCell]setImage:[NSImage ImageName:@“sampleHeader”] 如果我使用headerview的重写子类,则无法查看标题单元格中的图像或文本。请提供解决此问题的任何指针 我能够通过子类化NSTableHeaderCell插入图像和文

我需要实现一个具有特定大小和渐变的
headerview
。我必须在
headerview
的某些单元格中插入图像。尝试使用以下代码为
headerview
创建单元格,但无法自定义
headerview

[[tableColumn headerCell]setImage:[NSImage ImageName:@“sampleHeader”]

如果我使用headerview的重写子类,则无法查看标题单元格中的图像或文本。请提供解决此问题的任何指针

我能够通过子类化
NSTableHeaderCell
插入图像和文本。如何增加
NSTableHeaderView
的高度


如果我同时将
NSTableHeaderView
NSTableHeaderCell
子类化,则无法查看 我使用以下代码设置headerview和headercell

[tableView setHeaderView:CustomHeaderView]

[tableColumn setHeaderCell:[[[CustomHeaderTableCell alloc]initImageCell:
[NSImage IMAGENAME:@“样本”]]自动释放]]

我有相同的问题,在下面的网址给出


以下链接帮助我解决了这个问题

您需要为
NSClipView
NSTableHeaderView
CornerView
这就是我在代码中实现相同功能的方式

for(NSView * subview in [topScrollView subviews])
{           
   for(NSView * subSubView in [subview subviews])
   {
      if([[subSubView  className] isEqualToString:@"NSTableHeaderView"] &&  [[subview className] isEqualToString:@"NSClipView"]) 
      {
         [subSubView setFrameSize:NSMakeSize(subSubView.frame.size.width, subSubView.frame.size.height+5)];//HeaderView Frame
         [subview setFrameSize:NSMakeSize(subview.frame.size.width, subview.frame.size.height+5)];//ClipView Frame
      }

    }
    if ([[subview className] isEqualToString:@"_NSCornerView"])
    {
       [subview setFrameSize:NSMakeSize(subview.frame.size.width, subview.frame.size.height+5)]; //CornerView Frame
    }
}

您不需要为NSTableHeaderView创建子类

我能够在控制器类中使用以下代码段更改标题视图的高度:

-(void)awakeFromNib {
    NSRect frame = tableView.headerView.frame;
    frame.size.height = 26;
    tableView.headerView.frame = frame;
}

应该注意的是,滚动视图负责布局。它会根据需要自动更改headerView的框架,但保持高度不变。没有必要按照另一个答案中的建议调整剪辑视图等的大小。

您还可以创建一个
NSTableHeaderView
对象,用一个框架(带高度和宽度的rect)初始化它,并将该
NSTableHeaderView
对象设置为您的表视图

 NSTableHeaderView *tableHeaderView = [[NSTableHeaderView alloc] initWithFrame:NSMakeRect(0, 0, 120, 60)];
    [myTableView setHeaderView:tableHeaderView];
[tableHeaderView release];

这并不能完全解决这个问题。在这段代码之后,我可以看到NSTableHeaderView确实变得更高了——但是列标题单元格是按原始标准高度绘制的,在它们上面留下了一个空白的表宽条。所以,布局是自动的并不完全正确。也许您需要告诉其他人根据新的TableHeaderView大小重新布局列标题单元格。布局是自动的,但问题是NSTableHeaderCell以固定高度绘制其背景。您需要将其子类化并重写
-drawWithFrame:inView:
。最简单的实现是绘制一个渐变作为背景,然后调用
-drawInteriorWithFrame:inView:
,但问题不仅仅在于背景!如果我在那里放置更多文本,并将单元格(NSTableHeaderCell)配置为换行文本,则不会换行。相反,我只看到第一行的开头。我担心细胞没有得到正确的(更高的)框架,以吸引自己。否则---为什么它不能正确绘制文本?NSTableHeaderCell不能绘制包装文本。您需要对其进行子类化并覆盖
-drawWithFrame:inView:
。这对我来说并不可靠,直到我使用
[tableView tile]
之后才开始使用。我不确定2011年appkit中提供了哪些属性,但现在您肯定不需要双for循环来获取表头视图,或者clipview或cornerview。。。