Выкрашивание содержимого NSWindow - PullRequest
3 голосов
/ 01 ноября 2009

У меня есть NSWindow с 2 NSViews (NSSplitView и пользовательский NSView). Доступ к данным для заполнения этих представлений может занять некоторое время. В течение этого периода я хотел бы замаскировать содержание этих представлений.

Мой первый подход состоял в том, чтобы иметь черную треть NSView, которая покрывала бы другие 2, и достичь эффекта затухания, изменив его альфа-значение. Однако с тех пор я узнал, что иерархия с одноуровневыми представлениями не определена.

Какой здесь лучший подход?

  • Кэшируйте NSBitmapImageRep из 2 представлений, затем замените их на 3-е представление, используя кэшированные изображения в качестве фона
  • Установите альфа-значение для каждого вида отдельно (все еще не совсем уверен, как получить черный фон для эффекта седения)
  • Что-то, что я не учел

Ответы [ 2 ]

6 голосов
/ 01 ноября 2009

Я бы использовал дочернее окно. Установите для его представления содержимого простой черный вид (возможно, с информацией о состоянии и ходе выполнения в подпредставлениях), а его альфа-значение - для желаемого затухания, и добавьте его в качестве дочернего окна окна, содержимое которого вы хотите исчезнуть.

2 голосов
/ 01 ноября 2009

Я бы научил взгляды рисовать себя в отключенном состоянии, но здесь есть и другие предложения:

Как затемнить все, что отображается в одном NSView?

...