我在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];
}
答案 0 :(得分:3)
感谢Ross Carter的建议:
尝试将调用包装成super:
[NSGraphicsContext saveGraphicsState];
[super drawRect:rect];
[NSGraphicsContext restoreGraphicsState];