以编程方式调整NSTableView的大小

时间:2011-09-26 08:54:39

标签: objective-c macos cocoa nstableview

如何实现以编程方式创建的NSTableView大小调整功能?不应使用接口构建器。它应该像单击并拖动来更改NSTableView的大小。可能吗?如果是,请帮忙。 。 。 。

1 个答案:

答案 0 :(得分:0)

我担心您需要编写一些代码才能使其正常工作。我就是这样做的。

制作一个特殊的调整大小视图,它将跟踪鼠标事件并调用委托方法,提供跟踪位置的变化方式。

- (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)];
}

将此视图放在基本视图的右下角。设置自动调整遮罩,使此视图始终位于右下角。

将表格视图及其滚动视图放在基本视图上。设置滚动视图的自动调整遮罩,使其大小和宽度相当大。

在调整大小视图过程的委托中,更改鼠标位置并设置基本视图的框架。

- (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)];
}

当然滚动视图应该在调整大小视图下。您可以在调整大小视图等上绘制一些句柄。