Изменение размера NSTableView программно - PullRequest
0 голосов
/ 26 сентября 2011

Как реализовать функцию изменения размера NSTableView, созданную программно? Интерфейсный конструктор не должен использоваться. Это должно быть как щелчок и перетаскивание, чтобы изменить размер NSTableView. Является ли это возможным? Если да, пожалуйста, помогите. , , ,

1 Ответ

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

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

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

- (void)mouseDown:(NSEvent *)theEvent
{
    _startPoint = [theEvent locationInWindow];
    [_delegate resizingDidStart];
}

- (void)mouseDragged:(NSEvent *)theEvent
{
    NSPoint hitPoint = [theEvent locationInWindow];
    [_delegate resizeWithDeltaX:(hitPoint.x - _startPoint.x) deltaY:(hitPoint.y - _startPoint.y)];
}

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

Поместите табличное представление вместе с его представлением прокрутки в Основное Представление. Установите маску авторазмера в представлении прокрутки, чтобы его размер и ширина были большими.

В делегате процесса Resize View изменяется положение мыши и устанавливается рамка базового вида.

- (void)resizingDidStart
{
    _initialRect = [_baseView frame];
}

- (void)resizeWithDeltaX:(CGFloat)deltaX deltaY:(CGFloat)deltaY
{
    [_baseView setFrame:NSMakeRect(_initialRect.origin.x, _initialRect.origin.y + deltaY, _initialRect.size.width + deltaX, _initialRect.size.height - deltaY)];
}

Конечно, представление прокрутки должно быть под видом изменения размера. Вы можете нарисовать некоторый индекс ручки в представлении изменения размера и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...