10 вещей, которые
невозможно сделать в iOS
Александр Бакшеев
       CTO
Работа с шрифтами
Работа с шрифтами

Разрабочик устанавливает правильный
фрейм для UILabel:
Работа с шрифтами
Работа с шрифтами
Apple Font Tool Suite
       https://developer.apple.com/fonts/


ftxdumperfuser -t hhea -A d Font.otf

Custom font                Helvetica Neue
ascender="716"             ascender="975"
descender="-212"           descender="-217"
lineGap="219"              lineGap="29"

ftxdumperfuser -t hhea -A f Font.otf
Работа с шрифтами
Работа с шрифтами
Работа с шрифтами
Рендеринг текста

      UIKit

    Core Text
   Quartz Core
Core Text

Другие возможности Core Text:

• выравнивание по горизонтали
• выравнивание по ширине (выключка)
• отступ с красной строки
• ...
Маркировка области
     в тексте
Маркировка

• Результаты поиска
• Кастомные ссылки в UILabel   http://anyvoid.ru

➡И все это без UIWebView !
Бар Депозит – Управление Баром
Бар Депозит – Управление Баром
       Во время набора имени в
      поиске участки совпадения
           подсвечиваются в
          выпадающем меню
Рецепты Юлии Высоцкой
Рецепты Юлии Высоцкой
          При нажатии на ссылку со
           временем открывается
             установка таймера
Рецепты Юлии Высоцкой
Обтекание
произвольной фигуры
      текстом
21
Обтекание текстом
Core Text

Подробности

• презентация про CoreText: http://clck.ru/
  2Y_jd

• пример реализации: http://github.com/
  anyvoid/CoreTextDemo
Ускоряем скролл
Ускоряем скролл
Ускоряем скролл
Ускоряем скролл
Ускоряем скролл
Ячейка, содержит 2 изображения (432 × 
446)
В чем проблема?

• Изображения загружаются на главном
   потоке из сети

• Изображения загружаются на главном
   потоке из дискового кеша
Ускоряем скролл

Как реализовать:

• Загружайте картинки асинхронно с
   помощью SDWebImage: http://
   github.com/rs/SDWebImage

• Используйте фоновую загрузку
   изображений: http://anvd.cc/async-
   image.zip
Ускоряем скролл
Другие возможные проблемы:

• Синхронные вызовы при
  инициализации ячейки
  (tableView:cellForIndexPath:)

• Отсутствие кеширования ячеек
• Создание NSDateFormatter при каждом
  инициализации ячейки
Анимация
“выпадающий список”
Выпадающий список
Выпадающий список
Выпадающий список
35
Сложные анимации

Пример:

• http://anvd.cc/animations.zip
Кастомный индикатор
      загрузки
Видео нашей ромашки




                      38
Кастомный идикатор загрузки

 • Создаем набор изображений:



 • Используем UIImageView для
   отображения анимации изображений
Геолокация
Геолокация

• Виды геолокации
   • обычная геолокация
   • наблюдение за значительными
    изменениями геоположения
    пользователя

  • мониторинг заданной области
                                   41
Геолокация
Геолокация

• Информация
   • Location Awareness Programming Guide:
     Getting the User’s Location – http://bit.ly/
     UGJSjg

   • WWDC 2012, Session 303 – Staying on
     Track with Location Services
Анимация листания страниц
       с контентом
      (как в iBooks)
45
46
Листание страниц

• Как реализовать?
   • UIPageViewController
   • Рендеринг UIView в изображение и
     кеширование изображений
Интерактивные
  возможности
поточного видео
Видеопоток

Как добавить метаданные к HTTP Live
Streaming:

• Добавить тег в каждый контейнер с
  видео

• Использовать ключ
  AVMetadataID3MetadataKeyGeneralEnca
  psulatedObject
Симулируем
memory warnings
  на девайсе
Memory warnings

Как реализовать?

•   http://gist.github.com/3844783
anyvoid.ru
                      fb.com/anyvoid
                      github.com/anyvoid

Задавайте вопросы:
@baksheev
baksheev@anyvoid.ru

10 вещей, которые «невозможно» сделать в iOS