【问题标题】:NSTextView rounded border / stroke in Cocoa可可中的 NSTextView 圆角边框/描边
【发布时间】:2010-02-16 11:55:41
【问题描述】:

我正在继承 NSTextView 并覆盖 drawRect 方法,以便在 textview 周围绘制一个 NSBezierPathWithRoundedRect,但是 - 由于它具有圆角边缘,它们会干扰文本视图中的文本。

有什么方法可以在 NSTextView 的文本输入区域周围应用某种边距或填充,使其更加嵌入,远离圆边?或者是将 NSTextView 放在 NSView 中并将圆形笔划应用于 NSView 的更好方法?

- (void)drawRect:(NSRect)dirtyRect {
// Drawing code here.
[super drawRect:dirtyRect];

NSRect rect = [self bounds];
NSRect newRect = NSMakeRect(rect.origin.x+2, rect.origin.y+2, rect.size.width-3, rect.size.height-3);

NSBezierPath *textViewSurround = [NSBezierPath bezierPathWithRoundedRect:newRect xRadius:10 yRadius:10];
[textViewSurround setLineWidth:2.0];
[[NSColor whiteColor] set];
[textViewSurround stroke];

}

【问题讨论】:

    标签: cocoa drawing nstextview


    【解决方案1】:

    我认为 -setTextContainerInset: 可以满足您的需求。或者,您不应该在您的 -drawRect: 实现中调用 super 并自己绘制文本容器。

    【讨论】:

    • 不幸的是,插图只做左侧插图,它并非一直都是圆形的。我会尝试自己绘制容器。
    • 仍然无法定位 NSTextContainer。我只能为其分配宽度和高度,所以我假设它位于 0,0?
    • 文档说:“设置接收器在其关联文本容器周围留下的空白空间”,所以看起来 NSSize 确定对称的水平和垂直插入,但您可能必须同时设置容器的插入(setTextContainerInset: NSTextView 的方法) 和自己的大小(setContainerSize: NSTextContainer 的方法)。
    【解决方案2】:

    您可以尝试为整个 textView 字符串的段落样式设置边距。

    或者也许把你的文本视图放在一个更大的带有圆角和边框的父视图中?

    【讨论】:

      猜你喜欢
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 2020-12-02
      • 2012-07-17
      • 1970-01-01
      相关资源
      最近更新 更多