Как NSTableView ячейка добавить заполнение в ячейку? - PullRequest
2 голосов
/ 20 сентября 2011

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

Я не могу найти ничего в Интерфейсном Разработчике или в документации кода о добавлении отступов или вставок в ячейки.

Есть предложения?

Ответы [ 3 ]

4 голосов
/ 22 сентября 2011

Вы можете создать подкласс NSTextFieldCell и переопределить метод drawInteriorWithFrame: inView: для пользовательского рисования строки.

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
    NSRect titleRect = [self titleRectForBounds:cellFrame];
    NSAttributedString *aTitle = [self attributedStringValue];
    if ([aTitle length] > 0) {
        [aTitle drawInRect:titleRect];
    }
}

, где titleRectForBounds: добавляет пробел

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

    titleRect.origin.x += 5;
    titleRect.origin.y += 5;

    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;
}

Есть более полный примерна http://comelearncocoawithme.blogspot.com/2011/09/custom-cells-in-nstableview-part-1.html

0 голосов
/ 20 сентября 2011

в вашем cellforrowAtIndexPath вам нужно реализовать это.

cell.textLabel.text = [NSString stringWithFormat: @ "% @", sometext];

или еще возьмите метку и установите к ней рамку. Затем добавьте ее в ячейку

0 голосов
/ 20 сентября 2011

Простой способ : добавьте пробелы перед текстовыми строками. Лучший способ : встроить представление в вашу ячейку и поместить в него все другие объекты пользовательского интерфейса.

...