NSImageView с измененным размером не перерисовывается

У меня есть NSImageView, который загружает изображение из пакета приложения.

Он настроен как таковой:

coverImage.image = [NSImage imageNamed:@"themeSignEnd.png"];
coverImage.imageScaling = NSImageScaleNone;
coverImage.imageAlignment = NSImageAlignLeft;

Изображение отображается нормально.

Размер NSImageView рассчитывается на основе нескольких другие факторы, а затем устанавливаются с помощью этого кода:

coverImage.frame = CGRectMake((1280 - 869) / 2, 0, 869 * percentage, 800);

Это отлично работает при первом запуске (при запуске приложения).

NSImageView принимает размер, и содержащееся изображение обрезается по соответствующей границе.

К сожалению, когда я пытаюсь изменить размер NSImageView во время работы приложения (используя тот же код, приведенный выше), он не обновляется.

NSLogging coverImage.frame показывает, что кадр сам обновляется правильно. Однако вид не перерисовывается - ни при уменьшении, ни при увеличении кадра. Кроме того, когда я выхожу и перезапускаю приложение, NSImageView рисует правильную границу.

Что может вызвать такое поведение?

Возможно ли, что NSImageView просто не перерисовывается? Если да, то как я могу принудительно выполнить перерисовку?

Есть ли какие-то другие особенности NSImageView, которые я пропустил, которые могут привести к такому поведению?

edit:

Оказывается, эта ошибка возникает только тогда, когда Свойство ImageFrameStyle имеет значение NSImageFrameNone . Если для кадра установлено что-то еще, он будет перерисован нормально. К сожалению, нам нужно, чтобы изображение отображалось без рамки.

Есть ли разница в рендеринге для NSImageView с кадрами и без них, которая могла бы это объяснить?

7
задан 0x90 13 August 2011 в 16:55
поделиться