我在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];
Run Code Online (Sandbox Code Playgroud)
自定义textview调整策略集,因此它使用容器调整所有维度.这是自定义NSTextView的代码
- (void) setFrameSize:(NSSize)newSize {
[super setFrameSize:newSize];
NSTextContainer *container = [self textContainer];
newSize.width -= 200;
[container setContainerSize:newSize];
}
Run Code Online (Sandbox Code Playgroud)
感谢罗斯卡特的建议:
尝试像这样包装对 super 的调用:
[NSGraphicsContext saveGraphicsState];
[super drawRect:rect];
[NSGraphicsContext restoreGraphicsState];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1544 次 |
| 最近记录: |