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

JavaScript

Немножко юмора
const a = 0
const b = undefined
const c = 1 / 'a'
console.log(isNaN(a), a, typeof a)
console.log(isNaN(b), b, typeof b)
console.log(isNaN(c), c, typeof c)

Консоль:
false 0 "number"
true undefined "undefined"
true NaN "number"

То есть Not a Number имеет тип number! ?

И бонусом весёлое видео:

P.S. Не стоит воспринимать эту запись слишком серьёзно.

Хакинтош за 50 тысяч рублей

С недавних пор я работаю за новым MacBook Pro 15″ c процессором Core i7 на 8 потоков – этому я несказанно рад. Но вот чему не рад – это моему домашнему Mac mini 11 года выпуска, в котором стоит старенький Core i5 c 4 потоками. Хоть я и сделал в минике Fusion Drive, добавив SSD на 120 гигабайт, а так же впихнув в него максимум оперативной памяти, доведя её объем до сопоставимых с новым ноутбуком 16 гигабайт, всё равно по главному качеству – производительности – домашний компьютер теперь отстает от рабочего в 3 раза! Этот контраст несколько печалит, так как такое разительное отличие в работе крайне заметно. Миник на фоне ноутбука стал казаться «тормозом», хотя раньше меня он более-менее устраивал.
В связи с этим решил посмотреть, что можно предпринять, чтобы изменить такое положение вещей, так как брать ноутбук с работы не вариант и домашний компьютер надо обновлять. В конце концов ему уже 6 лет!

Читать далее Хакинтош за 50 тысяч рублей

Быстрая отправка сообщений в мессенджеры

Бывает, надо сделать кнопку «Поделиться» для определенного мессенджера. Самый быстрый способ — это url-схемы. Можно просто вызвать [[UIApplication sharedApplication] openURL:url];  для правильно сконфигурированной ссылки и установленный на телефоне мессенджер примет переданный текст для дальнейшей обработки.

Сейчас покажу, как это сделать для WhatsApp, Viber и Telegram. Читать далее Быстрая отправка сообщений в мессенджеры

Live Rendering и локализация

Есть в Xcode отличная возможность сразу в интерфейсе Interface Builder видеть итоговый результат отрисовки отличных от стандартных компонентов. Например, вы можете сделать свою кнопку с обводкой, добавив три свойства:

Значения этим свойствам можно буден назначить в панели инспектора при редактировании xib или storyboard, а при правильной реализации класса эти изменения тут же отобразятся на вашей кнопке. Подробнее прочитать можно тут, тут и в официальной документации.

Я же хочу поделиться результатом компиляции нескольких идей относительно локализации объектов, находящихся в xib или storyboard.

Читать далее Live Rendering и локализация

Ускоряем Xcode с помощью RAM disk

В операционной системе macOS есть возможность создать виртуальный диск, логический раздел, который будет находиться целиком в оперативной памяти. Иногда его удобно использовать, если вам требуется временное высокоскоростное хранилище для ваших файлов, с которыми вы работаете в данный момент. Например, в случае с Xcode это может быть место, где должны находиться файлы Derived Data.

Для начала запустите Терминал и из под sudo выполните команду:

Она создаст в оперативной памяти диск HFS+ размером в один гигабайт и примонтирует его. Теперь его можно указать как ‘/Volumes/ramdisk’ в настройках Xcode ➝ Preferences ➝ Locations ➝ Derived Data ➝ выбрать ‘Custom’ ➝ вписать ‘/Volumes/ramdisk’. Всё! Для большей уверенности можете переоткрыть проект или рабочее пространство вашего приложения. Вы заметите заметное ускорение работы с проектом, особенно при сборке и компиляции.

ВНИМАНИЕ: все данные будут удалены после размонтирования виртуального диска!!! Недопустимо хранить на нём важные данные и файлы!

Лично у меня при сборке проекта с обычными настройками (Fusion Drive 120GB SSD + 500GB HDD) на всё уходит 165 секунд, а при использовании RAM disk всего 72 секунды. Прирост скорости в 2,3 раза.