CALayer, NSTextView и масштабирование

В моем приложении я хочу обеспечить масштабирование текста в NSTextView с поддержкой слоя, например TextEdit от Apple. Я использую аналог этого ScalingScrollView. Также мне нужно создать несколько наложений CALayer на self.window.contentView. Все в порядке, пока я не сделаю [self.window.contentView setWantsLayer:YES].

До [setWantsLayer:YES]

введите здесь описание изображения

После [setWantsLayer:YES]

введите здесь описание изображения

У меня нет никаких идей, как решить эту проблему.


person Akki    schedule 29.10.2012    source источник


Ответы (1)


Я тоже искал решение похожей проблемы. Наконец, я обнаружил, что представления со слоями должны располагаться на целых пикселях, а не на субпикселях.

Например. если вы динамически вычисляете кадр вида с поддержкой слоя

 NSMakeRect((self.frame.size.width - 350)/2, (self.frame.size.height - 150)/2, 350, 150)

вы можете столкнуться с нецелыми значениями, поэтому вы должны сделать что-то вроде

 NSMakeRect(floor((self.frame.size.width - 350)/2), floor((self.frame.size.height - 150)/2), 350, 150)
person Daniel O'Hara    schedule 06.10.2013
comment
Боже, ты великолепен! К сожалению, этот вопрос потерял свою актуальность, но ваше решение такое элегантное. Спасибо! - person Akki; 06.10.2013