【问题标题】:How to draw half-transparent NSTableRowView?如何绘制半透明的 NSTableRowView?
【发布时间】:2014-03-13 22:54:09
【问题描述】:

我想自定义绘制浮动组行背景,但做不到。基本上我想要一个部分透明的背景(滚动或不滚动时始终保持相同的外观),但是当表格视图不滚动时(尽管滚动时它看起来像预期的那样),某些东西会改变我的NSTableRowView 子类的外观。 这是解释问题的代码和图像。

- (void)drawBackgroundInRect:(NSRect)dirtyRect
{
    [[NSColor colorWithCalibratedWhite:1.0 alpha:0.5] set];
    [[NSBezierPath bezierPathWithRect:dirtyRect] fill];
}

对于表格单元格视图,我尝试使用 NSTableCellView、NSView 和简单的 NSTextField(这是您在图像上看到的),但结果始终相同。

【问题讨论】:

    标签: objective-c macos cocoa nstableview nsoutlineview


    【解决方案1】:

    我可以通过在标题单元格视图及其表格视图上打开核心动画层来修复它。

    【讨论】:

      【解决方案2】:

      如果您除了用颜色填充行的背景之外没有做任何事情,您应该设置NSTableRowViewbackgroundColor 属性,而不是覆盖-drawBackgroundInRect:

      如果您确实需要此覆盖以进行进一步自定义,我注意到您忘记在实现中调用 [super drawBackgroundInRect:dirtyRect],这可能是您所看到的行为的原因。

      【讨论】:

      • 你的意思是 .backgroundColor 吗?如果是这样,那么我尝试设置它,但它总是被表格视图重置。如果我在 drawBackgroundInRect: 中调用 super ,那么它首先绘制默认的灰色背景,然后在该灰色背景上绘制半透明覆盖。
      • 是的,对不起,我就是这个意思。
      猜你喜欢
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      • 2012-01-16
      • 1970-01-01
      • 2021-04-10
      • 2010-10-08
      • 1970-01-01
      相关资源
      最近更新 更多