2013-03-17 31 views
0

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

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

NSView 来源:-65,-65 尺寸:130,130

我要的颜色整个背景

+0

哪一部分是没有绘制其整个背景的视图,以及它在视图层次结构中的位置? – 2013-03-17 22:12:05

+0

我有一个NSScrollView里面有一个NSView的子类。图片中间的圆是NSImageView,它是NSView子类的子视图。 我可以在负片区域显示子视图,但不绘制背景。我现在做的是我创建了另一个具有相同大小的NSView并将其作为子视图。虽然这不是我想象的,但它解决了我的具体问题。 – 2013-03-18 11:26:10

回答

0

尝试使用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]]替换最后一行。

+0

不幸的是,这是行不通的。没有实例方法fillRect:用于NSBezierPath。如果我使用[NSBezierPath fillRect:[self bounds]];我仍然有同样的问题。 – 2013-03-17 19:33:14

+0

是的,你是对的,这是一种类方法。然后尝试用视图的属性(相同的原点,宽度和高度)创建一个'NSRect',然后用这个矩形调用'-fillRect'方法。 – Moray 2013-03-17 19:48:47