NSTableHeaderView добавляет строку? - PullRequest
6 голосов
/ 25 ноября 2011

Для моего первого приложения для Mac я пытаюсь создать простое окно с видом таблицы.Я включил Заголовки, но он добавляет раздражающую строку поверх моей NSTableHeaderView:

enter image description here

Я не могу найти свойство, чтобы удалить его.Я знаю, что его можно удалить, потому что в Finder его нет:

enter image description here

Когда я отключаю Заголовки, границы там нет.Я также должен отметить, что NSTableView расположен внутри NSSplitView.Есть идеи?

Ответы [ 2 ]

3 голосов
/ 04 января 2017

Другое решение:

  1. Подкласс NSTableHeaderView
  2. Переопределить -drawRect:, чтобы нарисовать белую линию 1pt по горизонтали, чтобы соответствовать цвету фона представления заголовка таблицы.
  3. Создание экземпляра пользовательского представления заголовка с использованием -initWithFrame:, передающего существующий кадр headerView.
  4. Назначьте пользовательский вид заголовка свойству headerView табличного представления.

Реализация -drawRect::

- (void)drawRect:(NSRect)dirtyRect {
    // Allow the table header view to draw itself
    [super drawRect:dirtyRect];
     // Draw a 1pt white line across the width of the header view
    [[NSColor whiteColor] setFill];
    NSRectFill(NSMakeRect(0.0f, 0.0f, self.bounds.size.width, 1.0));
}

или в Swift:

override func draw(_ dirtyRect: NSRect) {
    super.draw(dirtyRect)
    let topBorderBox = NSRect(x: 0, y: 0, width: bounds.size.width, height: 1)
    if dirtyRect.intersects(topBorderBox) {
        NSColor.white.setFill()
        topBorderBox.fill()
    }
}
0 голосов
/ 25 ноября 2011

Проблема существует, потому что как оконная рама, так и представление прокрутки табличного представления имеют границу 1px.В зависимости от вашего макета вы можете установить borderStyle из NSScrollView, который включает ваш NSTableView в NSNoBorder (обратите внимание, что это удалит границу 1px со всех сторон вида прокрутки).Или вы можете переместить прокрутку вверх на 1 пиксель.

...