Рубрика «разработка под iOS» - 63

Нейросеть для определения лиц, встроенная в смартфон - 1Apple начала использовать глубинное обучение для определения лиц начиная с iOS 10. С выпуском фреймворка Vision разработчики теперь могут использовать в своих приложениях эту технологию и многие другие алгоритмы машинного зрения. При разработке фреймворка пришлось преодолеть значительные проблемы, чтобы сохранить приватность пользователей и эффективно работать на железе мобильного устройства. В статье обсуждаются эти проблемы и описывается, как работает алгоритм.

Введение

Впервые определение лиц в публичных API появилось во фреймворке Core Image через класс CIDetector. Эти API работали и в собственных приложениях Apple, таких как Photos. Самая первая версия CIDetector использовала для определения метод на базе алгоритма Виолы — Джонса [1]. Последовательные улучшения CIDetector были основаны на достижениях традиционного машинного зрения.

С появлением глубинного обучения и его применения к проблемам машинного зрения точность систем определения лиц сделала значительный шаг вперёд. Нам пришлось полностью переосмыслить наш подход, чтобы извлечь выгоду из этой смены парадигмы. По сравнению с традиционным машинным зрением модели в глубинном обучении требуют на порядок больше памяти, намного больше дискового пространства и больше вычислительных ресурсов.
Читать полностью »

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

Дайджест интересных материалов для мобильного разработчика #232 (27 ноября-3 декабря) - 1Читать полностью »

В предыдущей статье мы познакомились с основами процесса. Теперь можно приступить к рассмотрению кейса. Если вы пропустили начало — не беда, жмите по ссылке и догоняйте.

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

  • Задачи должны быть выполнены в рамках одного мультиплатформенного решения. (iOS/Android).
  • Изображения и объекты для распознавания можно изменить одним щелчком мыши.
  • 3D модели и анимация должны загружаться просто без танцев с вершинами и полигонами.
  • 3D модели должны откликаться на нажатие.

Процесс работы мы условно разделили на следующие шаги:

  • Распознать изображение или объект. После распознавания на этом месте отобразить модель с 3D объектом.
  • Показать 3D объект на экране, по аналогии с «pokemon go», без привязки к конкретному месту. При нажатии проигрывается анимация.
  • Показать 3D объект по заданным координатам как POI (точку интереса).

Давайте разберем первую часть, а именно научимся распознавать изображение и отобразим на его месте 3D объект.

Читать полностью »

Сегодня в 18:30 по московскому времени в офисе SuperJob состоится встреча iOS-разработчиков. Присоединяйтесь к прямой трансляции!

Спикеры и темы:

Алексей Коньшин, старший разработчик мобильных приложений SuperJob, с докладом «Построение iOS-приложения из переиспользуемых модулей».

Расскажет о том, как в SuperJob ускорили разработку экранов приложения, разделив их на самостоятельные блоки, как использовали для этого библиотеку IGListKit, как сделали её ещё лучше и как удалось ускорить разработку и унифицировать code style, внедрив генерацию кода.

Ольга Выростко, iOS-разработчик «Яндекса», с докладом «Адаптация приложений под iOS 11 и iPhone X».

Расскажет о том, какие вопросы встали перед разработчиками после недавней презентации Apple. Например, как сделать, чтобы приложение гармонично смотрелось в новой версии операционной системы и стабильно работало на iPhone X, какие новые возможности можно использовать, чтобы процесс разработки шёл быстрее, проще и приятнее. Ещё мы поговорим о том, как изменилось UI-тестирование после перехода на xCode 9 и что в нём нового.
Читать полностью »

image

В этом туториале мы создадим простое, но полнофункциональное приложение под watchOS 4. А конкретнее, мы будем работать над приложением придуманной авиакомпании Air Aber для Apple Watch.

Из этого туториала вы узнаете:

  • Как добавлять целевую сборку watchOS 4 в приложение iOS.
  • Как обмениваться данными между двумя целевыми сборками.
  • Как добавить в Storyboard контроллер интерфейса watchOS и расположить объекты интерфейса.
  • Как создать подкласс WKInterfaceController и соединить всё вместе.
  • Как добавить новый контроллер интерфейса, добавить к нему таблицу и создать прототип из строк.
  • Как создать подкласс класса WKInterfaceController, чтобы заполнить таблицу, настроить строки и обрабатывать выбор.
  • Как сделать контроллер интерфейса модальным и передавать ему данные для отображения.
  • Как создавать анимации на основе изображений.
  • Как использовать API анимации watchOS 4.

Читать полностью »

Разработчики приложений и игр iPhone заполучили смартфоны iPhone X и поделились с нами впечатлениями

Впечатления разработчиков и дизайнеров от iPhone X — и от выреза - 1

Главное для iPhone X — сторонние приложения. От дополненной реальности до сенсора TrueDepth, новые функции должны стимулировать креативность и подтолкнуть к действию сообщество разработчиков, которые выпустят для пользователей iPhone X инновационные новые приложения. Но хотя Apple даёт разработчикам новые игрушки на пробу, она должна при этом убедиться, что не сломала старые.

iPhone X — самое значительное изменение iPhone за несколько лет. У него увеличенное разрешение и иная форма экрана. Он избавился от кнопки Home, добавил новые или изменил старые жесты. Каждое из этих изменений может прибавить работы дизайнерам и разработчикам… а тут ещё вырез (notch). Можно ожидать, что примеру Apple последуют и другие производители смартфонов. Но как обойти эту штуку в дизайне? Насколько сложно адаптировать приложение для неё? Правда ли это, как говорят некоторые критики, пример плохого дизайна?

Чтобы выяснить, я поговорил с дизайнерами и разработчиками приложений и игр для iOS, которые недавно завершили процесс обновления своих приложений для iPhone X. Я хотел задать им некоторые из этих вопросов, но в целом хотелось услышать, как прошёл переход на новый смартфон для всех, кто работает в индустрии.
Читать полностью »

Мы потихоньку начинаем подводить итоги этого трудового года, и начнем, пожалуй, с нашего приложения для iOS — "ONLYOFFICE Документы". В этом году оно серьезно изменилось в плане функциональности. Стало более самостоятельным, благодаря добавленной возможности работать локально, без подключения к порталу ONLYOFFICE. Обзавелось совместной работой и адаптировалось к iOS 11 и IPhone X.

Расскажем обо всем по порядку.
«ONLYOFFICE Документы» для iOS: как изменилось приложение за год - 1
Читать полностью »

Как расправиться с читерами и не переписать весь код - 1

Несколько лет назад появился прототип игры War Robots (тогда она еще называлась Walking War Robots). Это был первый опыт Pixonic в жанре тактического PvP, поэтому многие будущие проблемы были заложены в коде изначально. Но несмотря на ряд трудностей (популярность проекта стремительно росла, небольшая команда не могла полностью изменить архитектуру игры в краткие сроки), нам в итоге удалось свести к минимуму количество читеров, а также исправить другие недостатки оригинального кода. Расскажу немного подробнее.Читать полностью »

What we have?

UI можно определить как набор вьюх, которые отображают данные, реагируют на события и при этом каким-то определенным образом расположены на экране.

Как мы размещаем элементы на экране?

  • Qt предлагает использовать контейнеры, умеющие внутри себя располагать элементы определенным образом. Вкладывая эти контейнеры друг в друга, можно получить необходимую расстановку.
  • WPF/XAML предлагает аналогичные контейнеры.
  • Android предлагает аналогичные контейнеры + систему констреинтов.
  • iOS предлагает Autolayout. Нужно описать набор ограничений (уравнений), непротиворечиво и однозначно описывающих расположение элементов. Решив систему уравнений с этими ограничениями, движок получит координаты и размеры элементов.
  • У Delphi есть anchors: прибивание краев к контейнеру. Очень похоже на resizing masks в iOS.
  • В web на сколько я понимаю используется вкладывание друг в друга контейнеров, поведение которых описывается стилями.

What problem with this?

We need to use code for special cases

Описанные инструменты заточены под типовые случаи, зачастую мы не можем (или можем, но это сильно неудобно) описать расположение какого-то элемента с помощью этих инструментов. Приходится делать это в коде. Логика описания layout'а размазывается по нескольким местам.

Должен быть способ лучше.

Читать полностью »

В новом дайджесте мы собрали истории про A/B-тестирование в Яндексе, про Google и Swift, про закрытие проектов, про новых тамагочи, про автоматизацию всего сущего и многое другое.

Дайджест интересных материалов для мобильного разработчика #231 (20 ноября — 26 ноября) - 1Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js