NSTextView和NSTextContainer尺寸&剪裁区

时间:2011-05-07 07:08:17

标签: cocoa

我在NSTextView中发现了非常有趣的文本容器行为。当我设置容器的大小,使其小于NSTextView框架的大小,并尝试 在NSTextView drawRect中绘制任何数字(如线条,矩形):,我的所有数字都剪切为文本容器的大小。

因此,NSTextView的帧大小“允许”我用它来绘制,但似乎仅限于容器大小。

如果有可能在文本视图中绘制但在文本容器外部?

自定义NSTextView中的代码 - (void)drawRect:

[super drawRect:dirtyRect];

NSBezierPath* aPath = [NSBezierPath bezierPath];
[aPath moveToPoint:NSMakePoint(100, 100)];
[aPath lineToPoint:NSMakePoint(500, 100)];
[aPath stroke];

自定义textview调整大小策略集,因此它会在容器的所有维度中调整大小。这是自定义NSTextView

的代码
- (void) setFrameSize:(NSSize)newSize {

    [super setFrameSize:newSize];

    NSTextContainer *container = [self textContainer];
    newSize.width -= 200;
    [container setContainerSize:newSize];
}

1 个答案:

答案 0 :(得分:3)

感谢Ross Carter的建议:

尝试将调用包装成super:

[NSGraphicsContext saveGraphicsState];
[super drawRect:rect];
[NSGraphicsContext restoreGraphicsState];