NSTablewView, режим выделения "Нет" и размытый фон
Я заметил, что когда мой взгляд основан NSTableView
имеет highlight
Атрибут, установленный на "Список источников" в Интерфейсном Разработчике, он визуализирует свой фон с эффектом вибрации (то есть он размывает то, что скрывается за его родительским окном)
Если вместо этого вы установите указанный атрибут на "Нет" или "Обычный" (два других параметра), то background color
для атрибута автоматически устанавливается белый цвет, а во время выполнения он отображается непрозрачным (даже если указан пользовательский цвет с альфа-каналом менее 1,0).
Мне нужно, чтобы ячейки таблицы не выделялись, но мне бы очень хотелось получить эффект размытия.
Кроме того, я не могу позволить запретить выделение ячеек с помощью метода NSTableViewDelegate:
func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool
... потому что это делает текстовые поля внутри моих ячеек недоступными для выбора и, следовательно, недоступными для редактирования.
Я нашел этот вопрос, который в основном просит противоположного решения (то есть отключить вибрацию, когда выделение установлено "Список источников"), поэтому, следуя там ответам, я попробовал этот код на контроллере представления, в котором размещается мое табличное представление:
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
let appearance = NSAppearance(named: NSAppearanceNameVibrantLight)
tableView.appearance = appearance
}
(внешний вид создается и присваивается в двух отдельных строках, чтобы подтвердить, что он не равен нулю в отладчике)
... но это ничего не меняет.
Есть ли легкий обходной путь?
1 ответ
В Интерфейсном Разработчике мне пришлось сделать три вещи:
- Дайте представлению прокрутки, которое содержит представление таблицы, прозрачный фоновый цвет.
- Снимите флажок "Рисовать фон" для просмотра прокрутки.
- Придайте табличному виду прозрачный фоновый цвет.
... тогда я смог увидеть NSVisualEffectView
что я поставил стол внутрь.