Я создаю приложение чата для Mac OS, похожее на iMessage. Интересно, как я могу реализовать масштабируемые текстовые представления в пузырьках. Я имею в виду, что при изменении размера окна чата окна с текстом будут изменять размер. Любые идеи, ссылки будут очень полезными. Спасибо за помощь)OS X приложение для чата с изменяемыми размерами пузырями
ответ
Для изменения размера текста вы используете автоматическую компоновку. Если у вас есть NSScrollView, содержащий MYBubbleView
s, содержащий NSTextView
s, вы можете добавить NSLayoutConstraint
s с помощью свойств содержимого изображения прокрутки и изображений пузырьков, а также добавить ограничения между всеми краями текстового вида и просмотра пузырьков. Затем привяжите вид пузырьков к верхнему/предыдущему виду.
Также убедитесь, что вы установили NSTextView
для обертывания. Ширина внутреннего размера текстового вида будет установлена так, чтобы она заполняла ширину, а внутренняя высота была установлена так, чтобы она соответствовала всему тексту.
Я раньше думал, что это было о рисовании пузыри, так что я первый дал этот ответ:
Если вы посмотрите на Messages.app, вы увидите, что они не являются круглые пузырьки. Они в основном состоят из нескольких форм, наложенных друг на друга. Прямоугольник с закругленными углами, плюс бежевый путь кончика.
Таким образом, вы должны иметь возможность использовать NSTextView для текста, сделать его подчиненным для пользовательского представления, которое рисует округленный прямоугольник и кончик в методе drawRect, а затем использует ограничения автоматического макета, чтобы изменить размер вашего пузырька с текстовым видом и текстовым видом на ширину окна.
Возможно, у вас также есть пузырь, который видит CALayer с заполнением и закругленными углами, плюс один с изображением для наконечника (или aCAShapeLayer для наконечника), но drawRect - это более легкий подход.
Пузыри сами по себе не большая проблема, реальной проблемой является изменение размера текста. Когда я изменяю размер окна, текст в пузырьках также должен изменяться – user3092701
Привет, основанный на обсуждении в JSQMessageViewController, я думаю, добавив немного больше трюков, вы можете использовать iMessage как пользовательский интерфейс, работающий на macOS. Пожалуйста, проверьте эту тему: https://github.com/jessesquires/JSQMessagesViewController/issues/1929 и это: http://chameleonproject.org/ – Fennec