【发布时间】:2012-10-13 08:47:46
【问题描述】:
我有一个 NSView,子类化,带有自定义背景绘图,并用渐变填充它。 在 IB 中,我在其中间的某处放置了一个复选框。
这是 drawRect 方法。
-(void) drawRect:(NSRect)dirtyRect {
CGFloat sc = 0.9f;
CGFloat ec = 0.6f;
NSColor* startingColor = [NSColor colorWithDeviceRed:sc green:sc blue:sc alpha:1];
NSColor* endingColor = [NSColor colorWithDeviceRed:ec green:ec blue:ec alpha:1];
NSGradient *grad = [[NSGradient alloc] initWithStartingColor:startingColor endingColor:endingColor];
[grad drawInRect:dirtyRect angle:270];
}
发生的情况是,首先调用相同的方法来绘制整个视图区域,然后再绘制 NSButton(复选框)位于其顶部的部分。当然,复选框背景是用完整的渐变绘制的,这是不对的,因为该部分要小得多。我在上述 NSView 上放置的其他控件也会发生同样的情况。
在这种事情上建议的方法是什么?
一种选择是使控件的高度与视图的高度相同,但这会在将来导致问题。
【问题讨论】:
标签: xcode draw gradient nsview