Как увеличить высоту NSTableHeaderView? - PullRequest
3 голосов
/ 19 декабря 2011

Мне нужно реализовать headerview с определенным размером и градиентом.Я должен вставить изображения в определенные ячейки headerview. Попытался создать ячейки для headerview, используя следующий код, но я не смог настроить headerview.

[[tableColumn headerCell] setImage:[NSImage imageNamed:@"sampleHeader"]];

Если я использую переопределенный подкласс заголовка, у меня не получится просмотреть изображения или текст в ячейке заголовка. Пожалуйста, предоставьте мне любые указатели для решения этой проблемы.

Я смог вставить изображения и текст, создав подкласс NSTableHeaderCell. Как увеличить высоту NSTableHeaderView?


Если бы я подкласс и NSTableHeaderView, и NSTableHeaderCell, не быловозможность просмотра чего-либо в headercell. Я использовал следующий код для настройки headerView и headercell

[tableView setHeaderView:CustomHeaderView];

[tableColumn setHeaderCell:[[[CustomHeaderTableCell alloc] initImageCell: [NSImage imageNamed:@"sample"]]autorelease]];

У меня та же проблема, что и внижний URL

http://lists.apple.com/archives/cocoa-dev/2002/Jun/msg00331.html

Ответы [ 3 ]

11 голосов
/ 05 февраля 2013

Вам не нужно создавать подкласс NSTableHeaderView.

Мне удалось изменить высоту представления заголовка, используя следующий фрагмент в классе контроллера:

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

Следует отметить, что представление прокрутки заботится о макете. Он автоматически изменяет фрейм headerView при необходимости, но оставляет высоту без изменений. Изменение размера представления клипа и т. Д., Как предлагается в другом ответе, не является необходимым.

1 голос
/ 05 июня 2014

Вы также можете создать объект NSTableHeaderView, инициализировать его рамкой (прямоугольник с высотой и шириной) и установить этот объект NSTableHeaderView для представления таблицы.

 NSTableHeaderView *tableHeaderView = [[NSTableHeaderView alloc] initWithFrame:NSMakeRect(0, 0, 120, 60)];
    [myTableView setHeaderView:tableHeaderView];
[tableHeaderView release];
1 голос
/ 23 декабря 2011

Следующая ссылка помогла мне в решении проблемы.

http://lists.apple.com/archives/cocoa-dev/2003/Feb/msg00676.html

Вам необходимо установить Рамку для 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
    }
}
...