Пытаюсь стать Swift-разработчиком… Ничего личного, просто бизнес… Ну, и понятно, что целевая платформа находится в экосистеме Apple.
Так вот – не так красив чорт как его рисуют! Начать решил с macOS – т.к. стояащая идея приложения имеется под неё. И, как оказалось, хрен вы где найдёте хороших гайдов под это дело! Вот под iOS – вагон и маленькая тележка, и в хвост и в гриву! Но вот с десктопом всё намного плачевнее. Кое-что есть, но никакого сравнения с мобильной осью! Просто крупицы информации…
Но сдаваться из-за первых же проблем это не наш метод, так что будем разбираться по ходу дела.
На данный момент приложение вполне себе запускается и делает примерно половину от нужного. Это приложение для меню-бара. Меню-бар такая хрень сверху, которая в других системах называется треем с панелью задач. Здесь это глобальнео меню + область уведомлений. Вот в эту област можно пихать свои приложения. Но приложения менюбар-онли не рекомендуются, т.к. меню имеет приоритет и если у вас куча приложений в области уведомлений, а меню активного приложения не помещается – область уведомлений будет сужена и часть приложений станет не видна.
Нас эта проблема не касается, т.к. суть приложения быть там. И примеры для создания такого приложения имеются: https://www.raywenderlich.com/450-menus-and-popovers-in-menu-bar-apps-for-macos
Проблема в другом – в интерфейсе! Казалось бы самая восхваляемая часть платформы очень коряво документирована. Для языка Swift по-крайней мере. Т.е. есть референсные доки к AppKit, но референсные доки это такое себе подспорье, когда ты толком не понимаешь к какому месту их прикладывать. В общем нужны гайды, а вот гайдов по построению интерфейсов для macOS практически нет. А те что есть по кругу рассказывают одну и ту же песню про базовое использование редактора интерфейсов.
Моя же проблема в необходимости динамического вывода и скрытия элементов. Это я даже победил. Но что пока остаётся непобеждённым – изменение размеров поповера, особенно после удаления в нём элементов. Т.е. расти-то он растёт при добавлении, а вот сужаться при удалении не хочет…
В общем есть всякие сторонние библиотеки для управления интерфейсом, но с первых дней не хочется пускаться во все тяжки и заменять всё подряд на “более чоткие версии”. Хочется сделать сначала как по учебнику (которого нет, бялд), а потом уже думать и сравнивать…
Накидаю завтра чё-нить полезное про использование
Ну, или потом накидаю всё вместе… 🤔
#swift #macos #ui
Так вот – не так красив чорт как его рисуют! Начать решил с macOS – т.к. стояащая идея приложения имеется под неё. И, как оказалось, хрен вы где найдёте хороших гайдов под это дело! Вот под iOS – вагон и маленькая тележка, и в хвост и в гриву! Но вот с десктопом всё намного плачевнее. Кое-что есть, но никакого сравнения с мобильной осью! Просто крупицы информации…
Но сдаваться из-за первых же проблем это не наш метод, так что будем разбираться по ходу дела.
На данный момент приложение вполне себе запускается и делает примерно половину от нужного. Это приложение для меню-бара. Меню-бар такая хрень сверху, которая в других системах называется треем с панелью задач. Здесь это глобальнео меню + область уведомлений. Вот в эту област можно пихать свои приложения. Но приложения менюбар-онли не рекомендуются, т.к. меню имеет приоритет и если у вас куча приложений в области уведомлений, а меню активного приложения не помещается – область уведомлений будет сужена и часть приложений станет не видна.
Нас эта проблема не касается, т.к. суть приложения быть там. И примеры для создания такого приложения имеются: https://www.raywenderlich.com/450-menus-and-popovers-in-menu-bar-apps-for-macos
Проблема в другом – в интерфейсе! Казалось бы самая восхваляемая часть платформы очень коряво документирована. Для языка Swift по-крайней мере. Т.е. есть референсные доки к AppKit, но референсные доки это такое себе подспорье, когда ты толком не понимаешь к какому месту их прикладывать. В общем нужны гайды, а вот гайдов по построению интерфейсов для macOS практически нет. А те что есть по кругу рассказывают одну и ту же песню про базовое использование редактора интерфейсов.
Моя же проблема в необходимости динамического вывода и скрытия элементов. Это я даже победил. Но что пока остаётся непобеждённым – изменение размеров поповера, особенно после удаления в нём элементов. Т.е. расти-то он растёт при добавлении, а вот сужаться при удалении не хочет…
В общем есть всякие сторонние библиотеки для управления интерфейсом, но с первых дней не хочется пускаться во все тяжки и заменять всё подряд на “более чоткие версии”. Хочется сделать сначала как по учебнику (которого нет, бялд), а потом уже думать и сравнивать…
Накидаю завтра чё-нить полезное про использование
NSStackView
с добавлением/удалением внутрь NSButton
и ограничения их (кнопок) размера через NSLayoutConstraint
!Ну, или потом накидаю всё вместе… 🤔
#swift #macos #ui
kodeco.com
Menus and Popovers in Menu Bar Apps for macOS
In this Menu Bar App tutorial you will learn how to present a menu and a popover that shows quotes from famous people.
NSButton с многострочной надписью:
https://telegra.ph/NSButton-with-multiline-label-09-30
#macos #swift #ui
https://telegra.ph/NSButton-with-multiline-label-09-30
#macos #swift #ui
Telegraph
NSButton с многострочной надписью
Кажется смысл опции перевода строк на кнопке не в том чтобы она длинный текст автоматом в многострочный форматировала на кнопке, а в том чтобы ты выводил туда преформатированную надпись в несколько строк. Т.е. подразумевается, что надпись на кнопке/чекбоксе…
NSScrollView
– потрахамшись… Делаю так чтобы сама область скролинга до определённых размеров росла вместе с контентом, после чего появлялся бы скролл. В обратном порядке тоже – сначала сжимается контент, при исчезании скрола вся область сжимается вслед за ним. Навеселившись с разными вариациями констрэйнтов пришёл к версии когда самый внутренний вид идущиий вместе с NSScrollView
(тот что просто NSView
, а не NSClipView
) биндится нулевыми отступами к содержимому и при изменении содержимого мы ресайзим именно этот "просто вид" руками. Он изменяет за собой содержимое через констрэйнты и корректно влияет на скролл. Ну а сама область снаружи как обычный вид биндится к окружению как нужно.Да, XCode показывает красное предупреждение в сториборде при таком раскладе, но похоже это полная хрень, т.к. ни при сборке ни при использовании ошибок не вылетает.
#macos #swift #ui