我在NSTextView中发现了非常有趣的文本容器行为。当我设置容器的大小,使其小于NSTextView框架的大小,并尝试在NSTextView drawRect:中绘制任何图形(如线条、矩形)时,我所有的图形都被裁剪为文本容器的大小。
因此,NSTextView的框架大小“允许”我使用它来绘图,但这似乎受到容器大小的限制。
是否有可能在文本视图内而在文本容器外进行绘制?
自定义NSTextView中的代码-(空) drawRect:
[super drawRect:dirtyRect];
NSBezierPath* aPath = [NSBezierPath bezierPath];
[aPath moveToPoint:NSMakePoint(100, 100)];
[aPath lineToPoint:NSMakePoint(500, 100)];
[aPath stroke];自定义文本视图调整大小策略集,因此它可以随容器在所有维度中调整大小。这是自定义NSTextView的代码
- (void) setFrameSize:(NSSize)newSize {
[super setFrameSize:newSize];
NSTextContainer *container = [self textContainer];
newSize.width -= 200;
[container setContainerSize:newSize];
}发布于 2011-05-09 03:19:54
感谢罗斯·卡特的建议:
尝试像这样包装对super的调用:
[NSGraphicsContext saveGraphicsState];
[super drawRect:rect];
[NSGraphicsContext restoreGraphicsState];https://stackoverflow.com/questions/5919628
复制相似问题