#MERCDEV
13 subscribers
2 photos
12 links
Коменты на воде про: #ios #macos #swift #ui #unity #python #django #ansible #go #dart #flutter #js #linux #docker

Контакты: @merc_dev

Приложения: https://bit.ly/merc-dev
Download Telegram
Пытаюсь стать Swift-разработчиком… Ничего личного, просто бизнес… Ну, и понятно, что целевая платформа находится в экосистеме Apple.

Так вот – не так красив чорт как его рисуют! Начать решил с 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
Пару дней бьюсь как заставить отображать чекбокс с надписью в несколько строк. Вчера смог ограничить ширину, но при этом перенос слов не заработал. Даже поспать не помогло - часто хорошие версии приходят перед сном или с утра... Опять весь день гугл пытать...

#swift #macos #ui
NSScrollView – потрахамшись… Делаю так чтобы сама область скролинга до определённых размеров росла вместе с контентом, после чего появлялся бы скролл. В обратном порядке тоже – сначала сжимается контент, при исчезании скрола вся область сжимается вслед за ним. Навеселившись с разными вариациями констрэйнтов пришёл к версии когда самый внутренний вид идущиий вместе с NSScrollView (тот что просто NSView, а не NSClipView ) биндится нулевыми отступами к содержимому и при изменении содержимого мы ресайзим именно этот "просто вид" руками. Он изменяет за собой содержимое через констрэйнты и корректно влияет на скролл. Ну а сама область снаружи как обычный вид биндится к окружению как нужно.

Да, XCode показывает красное предупреждение в сториборде при таком раскладе, но похоже это полная хрень, т.к. ни при сборке ни при использовании ошибок не вылетает.

#macos #swift #ui