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