【问题标题】:Set background color of NSView with negative bounds origin使用负边界原点设置 NSView 的背景颜色
【发布时间】:2013-03-06 01:20:02
【问题描述】:

我目前正在尝试为具有负边界原点的 NSView 设置背景颜色/图案。问题是,它只为视图的部分着色(x>0 && y>0 的部分)。

我明白,我必须在 -(void)drawRect: 函数中绘制背景。如何为整个视图着色,而不仅仅是坐标为正的部分?

原点:-65,-65 尺寸:130、130

我想给整个背景上色

【问题讨论】:

  • 视图的哪一部分没有绘制整个背景,它在视图层次结构中的什么位置?
  • 我有一个 NSScrollView,里面有一个 NSView 的子类。图片中间的Circle是一个NSImageView,它是NSView子类的一个子视图。我可以在负面区域显示子视图,但没有绘制背景。我现在所做的是我创建了另一个具有相同大小的 NSView 并将其作为子视图。虽然不是我想象的那样,但它解决了我的具体问题。

标签: objective-c cocoa nsview drawrect


【解决方案1】:

尝试使用NSBezierPath 对象来设置视图的背景颜色:

NSColor *color; //your background colour
CustomView *view; //this is your view, you should init it with the his own class
[color set];
[NSBezierPath fillRect:[view bounds]]; //sets the given Rect with the set colour

此代码应使用给定颜色为所有背景着色。 请注意,如果代码在视图类的实现中,则应将最后一行替换为 [path fillRect:[self bounds]]

【讨论】:

  • 不幸的是,这不起作用。 NSBezierPath 没有实例方法 fillRect:。如果我使用 [NSBezierPath fillRect:[self bounds]];我仍然有同样的问题。
  • 是的,你是对的,它是一个类方法。然后尝试使用视图的属性(相同的原点、宽度和高度)创建一个NSRect,然后使用此矩形调用-fillRect 方法。
猜你喜欢
  • 2011-11-24
  • 1970-01-01
  • 2016-05-04
  • 2014-07-29
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
相关资源
最近更新 更多