Режим «Картинка в картинке» в macOS Sierra

Забавный случай возник сегодня: у меня есть файл mp4 и установленная macOS Sierra, в которой есть крайне удобный режим просмотра «Картинка в картинке», но посмотреть с помощью плееров в таком режиме файл нельзя! Не умеет этого даже родной QuickTime. В VLC есть опция «Поверх всех окон», но она не поддерживает полноэкранные приложения и рабочие столы, а «картинка в картинке» – поддерживает. Например, видео с Youtube очень удобно смотреть параллельно с работой в других приложениях (например, лекции или трансляции).

И вот смотрел я на этот файл, смотрел, и подумал: «Раз он mp4, значит должен быть «родным» для системы… А закину-ка я его в Safari!». В Finder выбрал файл, нажал комбинацию CMD+Alt+C (скопировать абсолютный путь до файла) и вставил в адресную строку Safari — всё заработало!

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

Бывает, надо сделать кнопку «Поделиться» для определенного мессенджера. Самый быстрый способ — это 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 раза.

Изменение визуальных свойств существующих объектов через протокол UIAppearance

Уже довольно давно, начиная с iOS 5, у программистов появился удобный механизм стилизации внешнего вида компонентов интерфейсов – UIAppearance.

Например, вот так легко установить белый цвет для кнопок и заголовка на всех UINavigationBar и наследниках:

И это замечательный и удобный инструмент, так как влияет глобально на всё приложение. Если вам требуется изменять только определенные элементы, то можно либо сделать для них соответствующий субкласс от стандартного, либо воспользоваться методом

который применит указанные параметры только к тем элементам, что вложены в объекты соответствующих классов.
Пример из документации:

И всё работает замечательно, до того момента, когда в дело вступает один нюанс, описанный в документации:

NOTE
iOS applies appearance changes when a view enters a window, it doesn’t change the appearance of a view that’s already in a window. To change the appearance of a view that’s currently in a window, remove the view from the view hierarchy and then put it back.

Как это свойство влияет на подход к использованию данных методов?

Читать далее Изменение визуальных свойств существующих объектов через протокол UIAppearance

InstaClock – Часы для Apple TV

На выходных понял, что не хватает часов на приставке Apple TV. В магазине оказалось их крайне мало и очень дорогие. Решил сделать свои собственные и с изюминкой. За пару вечеров, используя весь свой опыт, довольно легко сделал простое приложение на два экрана и пару-тройку диалогов. Отправил на проверку два дня назад, а сегодня вечером его уже проверили и выпустили в продажу! Теперь оно доступно бесплатно. Ах, да, изюминка. Она в том, что на экран с часами можно вывести галерею из фотографий любого открытого аккаунта Instagram.

Короткое видео:

Apple TV и звук по Bluetooth

Поскольку у меня нет телевизора и монитора со встроенными колонками с поддержкой звука по HDMI пришлось обзавестись дополнительным девайсом, для передачи звука с приставки на колонки по Bluetooth. Да, вы правильно всё поняли: в Apple TV нет аудиовыхода. Никакого нет.
На Aliexpress был заказан вот такой «свисток»:

Приемник звука по Bluetooth
Приемник звука по Bluetooth

Работает он на удивление хорошо. Ближайший аналог в магазине стоит примерно в 7-8 раз дороже. Подключился он сразу. Для этого в Настройках Bluetooth приставки сначала надо спарить её с этим устройством с именем H168, а затем, если это не произойдет автоматически, в разделе Аудио выбрать выходом это устройство. Всё! Подключаем к нему колонки и звук идет в них, а не по HDMI.

One more thing

Во-первых, устройству требуется питание по обычному USB. Во-вторых, можно вообще организовать весёлую схему, если у вас одна аудио-система в доме: отправляете звук с мака по AirPlay на Apple TV, она транслирует его на этот донгл, а он уже в ваши колонки. Чтоб два раза с дивана не вставать и не возиться постоянно с настройками. Шикарно! Если хочется больше качества, то надо, конечно, поискать достойные аналоги. Например, у Samsung есть подобное устройство за 5 тысяч рублей. Описанное же обошлось мне всего в 150 рублей и 50 дней ожидания.

Xcode на iPad? Почему бы и нет!

Нашел в рассылке интересную большую статью про то, как может выглядеть Xcode на iPad. Мне понравилась эта идея. В конце-концов, если Apple заявляет, что её новые iPad Pro это полноценная замена компьютеру, то эти iPad должны иметь инструментарий, чтобы создавать приложения!Игры уже можно делать, есть утилиты от других разработчиков. Так что, ждём с нетерпением.