macOS High Sierra и CAShapeLayers, NSImageView, NSTableView соединяются

Я обновил MacOS High Sierra и теперь у меня возникли неожиданные проблемы в моем проекте, проблемы, которые раньше не видели в macOS Sierra У меня есть пользовательский NSImageView и после перетаскивания изображения в этом NSImageView Я могу нарисовать прямоугольники поверх изображения, используя CAShapeLayers а также mouseDown, mouseDragged функция. Затем я могу рассчитать интенсивность частей изображения внутри прямоугольников. Данные интенсивности находятся в массиве, и этот массив используется для NSTableView, NSImageView а также NSTableView в том же NSView, Расчет интенсивностей в @IBAction функция. После обновления, когда я нажал кнопку для расчета интенсивностей, прямоугольники переместились под изображение (до того, как они остались сверху). Я выяснил, что причина этого эффекта reloadData() функция для таблицы. Когда эта функция отключена, прямоугольники остаются сверху изображения.

Может кто-нибудь объяснить это странные вещи и что я могу сделать, чтобы это исправить? Мне нужно держать прямоугольники на верхней части изображения после того, как я нажал кнопку расчета.

Обновление Я обновил High Sierra, но reloadData() для NSTableView имеет тот же эффект при исчезновении CAShapeLayers как прежде.

1 ответ

У меня похожая проблема после обновления до High Sierra, подпредставления, которые я добавлял в NSImageView, больше не отображались.

Чтобы решить эту проблему, я добавил следующую строку в свой код (NSImageView был добавлен программно), как рекомендовано по этой ссылке:

    imageView.wantsLayer = true
Другие вопросы по тегам