NSCollectionView с ярким фоном

Я пытаюсь настроить NSCollectionView в своем приложении, чтобы использовать яркий (полуразмытый прозрачный) фон. Я успешно реализовал это для других представлений, просто добавив представление (например, метку или индикатор выполнения) в NSVisualEffectView. Я также пробовал это в NSCollectionViewItem представлении, которое используется NSCollectionView для отображения его содержимого. Это тоже работает.

Но я не могу заставить NSCollectionView использовать яркий фон. Я пробовал это, добавляя NSScrollView, содержащий NSCollectionView, к NSVisualEffectView, но это не работает. Я также установил для свойства drawsBackground значение false (как в Interface Builder, так и программно: collectionScrollView?.drawsBackground = false и collectionScrollView?.backgroundColor = NSColor.clearColor().

Иерархия представлений:

Window
- View
  - Split View
    - Custom View (with a source list)
    - Custom View
      - Visual Effect View
        - Scroll View
          - Clip View
            - Collection View

NB. Я также пробовал изменить цвет фона NSScrollView, содержащего NSCollectionView, на любой другой цвет (например, красный), но это тоже не работает (ни в Interface Builder, ни программно). Фон остается белым.


person Dieudonné    schedule 09.03.2016    source источник
comment
Вы пробовали изменить фон самого NSCollectionView?   -  person sschale    schedule 09.03.2016
comment
@sschale Это было так просто. По-видимому, я предположил, что не могу установить цвет фона, потому что эта опция не была доступна в Интерфейсном Разработчике. Но я могу установить цвет фона, используя `collectionView? .BackgroundColors = [NSColor.clearColor ()]`. Спасибо!   -  person Dieudonné    schedule 09.03.2016
comment
Вот это да. Благодаря @ Dieudonné я наконец могу сделать NSCollectionView с прозрачным фоном. Я заметил свойство ›backgroundColorS‹. БЛАГОДАРЮ ВАС !   -  person user1105951    schedule 10.04.2019


Ответы (1)


Комментарии выше верны, но важно отметить, что NSCollectionView встроен в NSScrollView, который имеет свой собственный фон. Решение состоит в том, чтобы очистить фон представления коллекции И установить включающее представление прокрутки, чтобы не отображать его фон. Это можно сделать в Интерфейсном Разработчике или с помощью второй строки кода ниже.

collectionView.backgroundColors = @[[NSColor clearColor]];
collectionView.enclosingScrollView.drawsBackground = NO;

Конечно, убедитесь, что никакие другие супервизоры не рисуют непрозрачный фон (например, установите класс родительского представления равным NSVisualEffectView.

Более подробную информацию можно найти в ​​этом ответе (в основном тот же вопрос).

person Demitri    schedule 26.04.2019