objective-c - 用 cocoa 绘制线分隔符

标签 objective-c cocoa nsview nsbox

如何绘制这样的线分隔符:

enter image description here

请注意,有 2 条单像素线彼此重叠。有什么建议吗?

<小时/>

编辑:

这是我需要的代码,在 NSBox 子类中:(或 NSView,并不重要):

- (void)drawRect:(NSRect)rect
{
    [[NSColor lightGrayColor] set];
    NSRectFill(NSMakeRect(0, 1, NSWidth(rect), 1));
    
    [[NSColor whiteColor] set];
    NSRectFill(NSMakeRect(0, 0, NSWidth(rect), 1));    
}

最佳答案

通常这种分隔符是用NSBox绘制的,通常配置为NSBoxSeparator类型。但这并不完全是您想要的外观。我建议在 NSBox 子类中手绘它(这样你就可以获得正常的 NSBox 行为)。有关 NSBox 子类的示例,请参阅 Matt Gemmell 的 RoundedBox .

您只需要两行,因此 drawRect: 应该非常简单。以这种方式封装它将使您变得非常灵活。

(当然,您也可以考虑仅使用标准 NSBox 分隔符,而不是创建自定义外观。这就是它的用途。)

关于objective-c - 用 cocoa 绘制线分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15070740/

相关文章:

swift - cocoa swift : Connect Main Menu to Preferences Window Controller & Disabling Items like Minimise in Attributes Inspector doesn't work in Xcode?

objective-c - 在 OSX 中创建许可协议(protocol)屏幕

iphone - 使用AudioServicesAddSystemSoundCompletion传递参数

iphone - 键盘上方的 UIToolbar - iPhone SDK

cocoa - 从 subview 中删除 View 不会调用 willRemoveSubview

swift - 为什么我的 NSView 在点击时不绘制内容?

objective-c - 设置属性时执行附加代码的正确方法

c++ - NSPropertyListSerialization propertyListWithData 因二进制 plist 而失败

cocoa - CGImageDestination 将 CMYK 颜色空间保存为 RGB

objective-c - 核心动画层的webview