LUNA Design PRIME

Мне наконец-то приехал предзаказанный летом корпус от LUNA Design. И я смею утверждать, что это лучший ПК-корпус, что я вообще видел вживую или на Ютубе.

Сегодня с утра записал краткую распаковку и разбор. Наслаждайтесь:

Видео Часы 4K

Сделали с Александром Воробьёвым приложение для Apple TV с красивейшими 4K видео Карелии и окрестностей. Если у вас есть приставка, вы можете найти его в поиске по запросу Video Clock 4K либо Видео Часы 4K. Приложение доступно совершенно бесплатно!

https://apps.apple.com/us/app/video-clock-4k/id1107892109

Применение макросов к модификаторам в SwiftUI

В прошлой статье о разработке приложений на SwiftUI я использовал следующий макрос вокруг блок кода, чтобы он соответсвенно присутствовал только в сборке под Catalyst:

Подобных макросов в Swift и SwiftUI несколько, например, есть еще

Так как не все API в SwiftUI доступны на всех платформах, то макросы оказываются крайне полезными. Приведу живой пример: focusable – это модификатор, недоступный на iOS.

Раз так, то если вы пишите код, который должен работать на всех платформах, то вам необходимо обернуть этот модификатор проверяющим макросом.

Да вот беда: сделать этого нельзя! Подобные строки добавленные в цепочку модификаторов вызывают ошибку компиляции:

ПК на базе Luna Design PRIME

Недавно задумался купить себе компьютер в дополнение к рабочему MacBook Pro 16″. Но последовательным изучением линейки актуальных ноутбуков и компьютеров Apple пришел к выводу, что либо мне не нужен свой макбук (я ведь всегда могу открыть рабочий ноут), либо мне нужен точно такой же, как рабочий, а он стоит почти 200 тысяч рублей. Это очень дорого.

Потом я вспомнил, что у дочери уже совсем на ладан дышит Mac mini 2011 и обратился к современному рынку компьютерных комплектующих. Таким образом родилась очень странная на первый взгляд, но оправданная сборка.

Как настроить внешний вид Sidebar панели NavigationView в Catalyst-приложении в SwiftUI

Для тех, кому невтерпеж ссылка на сниппет: https://gist.github.com/SoundBlaster/05362e2ee026a524f2489483edcb777d

Оказалось, что конфигурация интерфейса по умолчанию, создаваемая для вашего SwiftUI приложения, которое использует Catalyst для работы на macOS, не поддерживает внешний вид, аналогичный нативным приложениям для macOS, пусть даже они написаны на абсолютно идентичных компонентах.

Боковая левая панель NavigationView ни за что не захочет становиться прозрачной с присущим всем новым приложениям macOS эффектом затуманенного стекла или блюра. Для этого в SwiftUI существует специальный модификатор:

Но данный модификатор не оказывает должного воздействия при сборке с целевым назначение targetEnvironment(macCatalyst)!

Мне очень хотелось получить такой же внешний вид, как у нового приложения «Ассистент обратной связи»:

Но получалась лишь скучная iOS-подобная панель:

Официально существует способ получить желаемый эффект в Catalyst приложении, но сделать это можно только с помощью UIKit, вручную настраивая и управляя экземпляром UISplitViewController: Apply a Translucent Background to Your Primary View Controller. Этот способ возможен, но добавляет головной боли при связывании панелей логикой навигации, выходящей за рамки SwiftUI. Хотелось получить родное для фреймворка решение.

Я подумал, как обычно бывает в таких ситуация: «Решение точно должно быть!». За годы практики получалось даже исправлять баги в UIKit, что уж говорить о том, чтобы просто включить нужное свойство.

Первым делом обратимся к иерархии компонентов интерфейса:

Ага, UISplitViewController у нас присутствует! Просто он скрыт под капотом имплементации NavigationView и нигде не торчит наружу, а про необходимость влияния на него модификатора listStyle, видимо, либо забыли, либо специально не сделали, чтобы подстегнуть создавать macOS приложения (обожаю теории заговоров!).

Дело за малым – достучаться до инстанса этого класса в иерархии и сделать то, что советует Apple в своём руководстве.

В SceneDelegate.swift в методе SceneDelegate.scene(_:willConnectTo:options:) добавляем поиск контроллера нужного класса:

Далее меняем его свойство и включаем блюр:

Но этого мало – UIHostingView левой панели остаётся белой и непрозрачной, скрывая от нас прекрасный размытый фон окна. Штош, ищем вьюшки и убираем фон (так можно, ведь это просто proof-of-concept):

Последний штрих: скрываем для macOS панель заголовка окна:

Готово!

SwiftUI: Новый Rounded стиль текста для заголовка в Navigation Bar

Оказалось, что не так и просто добраться до нового стиля шрифта семейства SF, который анонсировали на WWDC 2019.

После некоторого времени, потраченного безуспешно на поиски примеров на сайте с документацией, а так же на различных сайтах с туториалами и, конечно же, на StackOverflow я решил самостоятельно разобраться, как создавать экземпляр UIFont с помощью UIFontDescriptor с нужным мне face:

Сам же дизайн создать и применить очень просто, если вам лишь нужно изменить шрифт у обычного элемента Text:

К сожалению, изменить такими модификаторами стиль заголовка навбара в SwiftUI нельзя, поэтому приходится использовать UIAppearance протокол. Приведённый в начале код необходимо разместить где-то либо в коде SceneDelegate, либо в init() методе вашего компонента SwiftUI.

Мониторинг и диагностика проблем в приложениях Облака Mail.Ru — Павел Осипов (Mail.ru Group)

Читать далее Мониторинг и диагностика проблем в приложениях Облака Mail.Ru — Павел Осипов (Mail.ru Group)

Изображение из пакета приложения в WebView, React Native, Android

Если вам потребуется отобразить статичный контент в WebView в Android приложении, сделанном на React Native, и при этом использовать в HTML контенте изображения, хранящиеся локально в пакете приложения, то вы можете настроить WebView так, чтобы его source содержал в baseUrl указание на file:///android_asset/тогда в итоге вы сможете отобразить тег img со значением src="./image.png", где image.png – это имя файла изображения, изображение при этом необходимо поместить в папке android/app/src/main/assets. Конечно, вы можете использовать более глубокие пути до папок и файлов и более сложную иерархию каталогов.

iPhone X

Я один обратил внимание на странное устройство экрана в новом iPhone X? Что за второй слой матрицы дисплея, обращенный внутрь?

Источник

Если судить по снимкам iFixit, то так и есть — матрица загнута в нижней части, только не столь красочно, как в ролике это выглядит: 1, 2