Как получить выделение выбора списков источников, чтобы использовать внешний вид Dark Vibrancy в OS X 10.10?
В списках источников OS X 10.10, похоже, используется легкая вибрация. В Finder (и в некоторых других сторонних приложениях, например, в Things.app) выбранный элемент в списке источников обозначается темной вибрирующей внешностью. Например, см. Строку "Рабочий стол" на изображении ниже.
Как я могу повторить это поведение? Нужно ли использовать методы делегата для указания представления строки таблицы,
-outlineView:rowViewForItem:
и попытаться сделать собственный рисунок или есть более прямой подход? Если вы создадите стандартный интерфейс списка источников в XCode, подсветка по умолчанию останется стандартным синим прямоугольником, который мы видели в предыдущей версии OS X.
4 ответа
Вот эквивалент Swift:
func outlineView(_ outlineView: NSOutlineView, rowViewForItem item: Any) -> NSTableRowView? {
return CustomTableRowView(frame: NSZeroRect);
}
И подкласс NSTableRowView
import Cocoa
class CustomTableRowView: NSTableRowView {
override var isEmphasized: Bool {
set {}
get {
return false;
}
}
}
Поработав некоторое время, я нашел способ добиться этого. Оказалось, что я получу стиль "Подсветка искателя", когда использую NSTableViewSelectionHighlightStyleSourceList и нажимаю за пределами моего NSOutlineView. Так что я подумал, что так и будет, если вы откажетесь от первого ответа.
Просто сделайте ваш NSOutlineView подклассом и переопределите этот метод:
-(BOOL)acceptsFirstResponder{
return NO;
}
Это работает, но с некоторыми недостатками. Например, использование клавиш со стрелками в NSOutlineView больше не будет работать. Я скачал приложение Things, и оно также не позволяет использовать клавиши со стрелками, поэтому очень вероятно, что именно так они и делают. Если кто-нибудь найдет лучший способ, пожалуйста, опубликуйте его.
Если вы хотите, чтобы клавиши со стрелками работали, вы можете создать подкласс NSTableRowView и переопределить следующий метод:
- (BOOL)isEmphasized
{
return NO;
}
Я не уверен, что это "Темная вибрация".
Я бы предпочел установить цвет фона на что-то вроде "Alternate Selected Control Color Color"
Посмотрите на NSTextField в InterfaceBuilder. Есть много цветов "Control Text", которые имеют особый вид на представлениях визуальных эффектов.
и для установки цвета выделения посмотрите этот ответ (не проверено): NSTableview Изменить цвет выделения