- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 NSSplitView,其左侧 Pane 中有一个 TableView 。我注意到,当我在左 Pane 中选择一个项目并将焦点更改到右 Pane 时,左 Pane 会失去焦点,突出显示的行的突出显示颜色会变成灰色,文本会变成黑色。
我通过覆盖 NSTableRowView 中的 drawSelectionInRect
来覆盖突出显示颜色。通过这样做,突出显示颜色保持相同的自定义颜色,但文本变暗,看起来不对。
我可以在表格 View 失焦时让突出显示颜色发生变化,或者防止文本在失焦时变暗吗?
最佳答案
当您单击 Split View中的另一个 View 时,OS X 似乎会在行 View 及其 subview 上调用 setBackgroundStyle。有趣的是,这似乎只发生在 NSOutlineView 上。
因为我已经有了代码来处理在选择行时将图像更改为不同的图像(以提高对比度),并且当我需要使用 outlineViewSelectionDidChange
和时,我显式设置背景样式outlineViewSelectionIsChanging
我重写了 setBackgroundStyle
使其成为无操作,并制作了自己的自定义 setter 来更改 _backgroundStyle
ivar。
看起来像这样:
@implementation TextFieldWithHighlighting
@synthesize backgroundStyle = _backgroundStyle;
- (NSBackgroundStyle) backgroundStyle {
return _backgroundStyle;
}
@synthesize secretBackgroundStyle = _secretBackgroundStyle;
- (NSBackgroundStyle) secretBackgroundStyle {
return _backgroundStyle;
}
- (void)setBackgroundStyle:(NSBackgroundStyle)backgroundStyle {
}
- (void) setSecretBackgroundStyle:(NSBackgroundStyle)secretBackgroundStyle {
_backgroundStyle = secretBackgroundStyle;
self.needsDisplay = YES;
}
- (void)drawRect:(NSRect)dirtyRect {
if(_backgroundStyle == NSBackgroundStyleDark) {
if(self.originalTextColor == nil) {
self.originalTextColor = self.textColor;
}
self.textColor = [NSColor whiteColor];
} else {
if(self.originalTextColor) {
self.textColor = self.originalTextColor;
} else {
self.textColor = [NSColor colorWithCalibratedRed:0x40/255.0 green:0x40/255.0 blue:0x41/255.0 alpha:0xFF/255.0];
}
}
[super drawRect:dirtyRect];
}
@end
它只对我有用,因为我正在显式处理更改其选择的行,并且据我所知,我不依赖操作系统为我更改它。如果我可以再次这样做,我只会插入使用系统突出显示颜色,在这种情况下我可以免费获得此功能。
关于cocoa - 防止 NSTableRowView 在未聚焦时更改突出显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35051359/
我有一个自定义的 NSTableRowView 实现来显示我的数据单元格。该表还包含使用简单 NSTextField 的组行。 在我的自定义行 View 中,我需要稍微更改底部分隔符的绘制,具体取决于
如果你有一个 tableView 并且想使用 NSTableRowView 的子类,你可以使用委托(delegate)函数 - (NSTableRowView *)tableView:(NSTable
我有一个 NSSplitView,其左侧 Pane 中有一个 TableView 。我注意到,当我在左 Pane 中选择一个项目并将焦点更改到右 Pane 时,左 Pane 会失去焦点,突出显示的行的
我的应用程序中有两个 NSTableView,用户可以将项目从表 A 拖放到表 B。将项目拖动到表 B 时,Xcode 会给我以下布局警告消息: Layout still needs update a
在侧边栏样式大纲 View 中,当我在传递给 outlineView:didAddRowView:row: 的行 View 上将 backgroundColor 设置为白色时,它仅在行的内容。在 su
我已经重写了 NSTableRowView,到目前为止它正在工作。我面临的问题是绘制空行的分隔符。 drawSeparatorInRect:dirtyRect 似乎只覆盖有内容的行,其余所有似乎都填充
我正在尝试在选择表格行时实现自定义行颜色。 -(void)tableViewSelectionDidChange:(NSNotification *)notification{ NSInteg
我想知道如何在 NSOutlineView 中设置所选项目的背景。通过将 SelectionHighlightStyle 设置为 NSTableViewSelectionHighlightStyleS
我正在使用 Storyboard 进行 OSX 开发。我正在使用 NSTableView ,并且不同的 NSTableRowViews 用于此 TableView 的行。这是逻辑- func
我在 NSVisualEffectView 中使用自定义 NSTableRowView。我在 CustomTableRowView 中实现了自定义 lightlight 样式,如下所示: class
当行展开/折叠时,我正在尝试修改我的 NSOutlineView 中使用的自定义 NSTableRowView 的外观。我的 NSOutlineViewDelegate 包括: - (NSTableR
我注意到我的应用程序出现了奇怪的行为,但找不到修复它的方法:我有 NSOutlineView 和自定义 NSTableRowView 并支持拖放。 当我首先在 outlineview 上拖动项目(例如
我有一个基于 View 的 NSTableView,我正在尝试自定义某些行的外观。 我知道我需要实现标题中提到的委托(delegate)方法;但我不知道该怎么做。 文档说: You can use t
我是一名优秀的程序员,十分优秀!