Оглавление
Предисловие. 13
Для кого предназначена книга. 14
Как построено издание. 14
Дополнительные ресурсы. 18
Условные сокращения, используемые в данной книге. 19
Работа с примерами кода. 19
Нам интересны ваши отзывы. 20
Благодарности. 20
От издательства. 21
Глава 1. Реализация контроллеров и видов. 22
1.0. Введение. 22
1.1. Отображение предупреждений с помощью UIAlertView. 44
1.2. Создание и использование переключателей с помощью UISwitch. 53
1.3. Оформление UISwitch. 57
1.4. Выбор значений с помощью UIPickerView. 60
1.5. Выбор даты и времени с помощью UIDatePicker. 66
1.6. Реализация инструмента для выбора временных рамок
с помощью UISlider. 71
1.7. Оформление UISlider. 75
1.8. Группирование компактных параметров
с помощью UISegmentedControl. 80
1.9. Представление видов и управление ими с помощью UIViewController. 84
1.10. Предоставление возможностей совместного использования
информации с применением UIActivityViewController. 88
1.11. Предоставление специальных возможностей совместного
использования данных с применением UIActivityViewController. 93
1.12. Внедрение навигации с помощью UINavigationController. 98
1.13. Управление массивом контроллеров видов, относящихся
к навигационному контроллеру. 104
1.14. Демонстрация изображения на навигационной панели. 106
Оглавление 7
1.15. Добавление кнопок на навигационные панели
с помощью UIBsrButtonItem. 107
1.16. Представление контроллеров, управляющих несколькими видами,
с помощью UITabBarController. 114
1.17. Отображение статического текста с помощью UILabel. 119
1.18. Оформление UILabel. 124
1.19. Прием пользовательского текстового ввода с помощью UITextField. 126
1.20. Отображение длинных текстовых строк с помощью UITextView. 136
1.21. Добавление кнопок в пользовательский интерфейс
с помощью UIButton. 140
1.22. Показ изображений с помощью UIImageView. 145
1.23. Создание прокручиваемого контента с помощью UIScrollView. 149
1.24. Загрузка веб-страниц с помощью UIWebView. 155
1.25. Отображение протекания процессов с помощью UIProgressView. 159
1.26. Создание и отображение текстов с оформлением. 161
1.27. Представление видов «Основной — детали»
с помощью UISplitViewController. 165
1.28. Организация разбивки на страницы с помощью
UIPageViewController. 169
1.29. Отображение вспомогательных экранов с помощью
UIPopoverController. 175
Глава 2. Создание динамических и интерактивных
пользовательских интерфейсов. 184
2.0. Введение. 184
2.1. Добавление тяготения к компонентам пользовательского
интерфейса. 186
2.2. Обнаружение столкновений между компонентами
пользовательского интерфейса и реагирование на них. 187
2.3. Анимирование компонентов пользовательского интерфейса
с помощью толчков. 194
2.4. Прикрепление нескольких динамических элементов друг к другу. 199
2.5. Добавление эффекта динамического зацепления к компонентам
пользовательского интерфейса. 203
2.6. Присваивание характеристик динамическим эффектам. 206
Глава 3. Автоматическая компоновка и язык визуального
форматирования. 211
3.0. Введение. 211
3.1. Размещение компонентов пользовательского интерфейса
в центре экрана. 214
3.2. Определение горизонтальных и вертикальных ограничений
на языке визуального форматирования. 217
8 Оглавление
3.3. Применение ограничений при работе с перекрестными видами. 224
3.4. Конфигурирование ограничений автоматической компоновки
в конструкторе интерфейсов. 231
Глава 4. Создание и использование табличных видов. 234
4.0. Введение. 234
4.1. Наполнение табличного вида данными. 238
4.2. Использование дополнительных элементов в ячейке
табличного вида. 242
4.3. Создание специальных дополнительных элементов
в ячейке табличного вида. 245
4.4. Обеспечение удаления смахиванием в ячейках табличных видов. 248
4.5. Создание верхних и нижних колонтитулов в табличных видах. 249
4.6. Отображение контекстных меню в ячейках табличных видов. 260
4.7. Перемещение ячеек и разделов в табличных видах. 264
4.8. Удаление ячеек и разделов в табличных видах. 270
4.9. Использование UITableViewController для удобства
при создании табличных видов. 280
4.10. Отображение элемента управления, предназначенного
для обновления информации в табличных видах. 286
Глава 5. Выстраивание сложных макетов с помощью
сборных видов. 290
5.0. Введение. 290
5.1. Создание сборных видов. 292
5.2. Присваивание источника данных сборному виду. 295
5.3. Обеспечение последовательной компоновки в сборном виде . 297
5.4. Наполнение сборного вида простейшим содержимым. 299
5.5. Заполнение сборных видов специальными ячейками
с помощью XIB-файлов. 304
5.6. Обработка событий в сборных видах. 309
5.7. Создание верхних и нижних колонтитулов в макете
с последовательной компоновкой. 314
5.8. Добавление собственных вариантов взаимодействий
к сборным видам. 319
5.9. Представление контекстных меню в ячейках сборных видов. 322
Глава 6. Раскадровки. 325
6.0. Введение. 325
6.1. Добавление в раскадровку навигационного контроллера. 326
6.2. Передача данных с одного экрана на другой. 326
6.3. Добавление в раскадровку контроллера с панелью вкладок. 333
6.4. Внедрение специальных переходов между сегвеями в раскадровке. 335
6.5. Размещение изображений и других компонентов пользовательского
интерфейса в раскадровках. 340
Оглавление 9
Глава 7. Параллелизм. 343
7.0. Введение. 343
7.1. Создание блоковых объектов. 350
7.2. Доступ к переменным в блоковых объектах. 354
7.3. Вызов блоковых объектов. 360
7.4. Решение с помощью GCD задач, связанных с пользовательским
интерфейсом. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
7.5. Синхронное решение с помощью GCD задач, не связанных
с пользовательским интерфейсом. 366
7.6. Асинхронное решение с помощью GCD задач, не связанных
с пользовательским интерфейсом. 370
7.7. Выполнение задач после задержки с помощью GCD. 376
7.8. Однократное выполнение задач с помощью GCD. 380
7.9. Объединение задач в группы с помощью GCD. 382
7.10. Создание собственных диспетчерских очередей с помощью GCD. 386
7.11. Синхронное выполнение задач с помощью операций. 389
7.12. Асинхронное выполнение задач с помощью операций. 395
7.13. Создание зависимости между операциями. 401
7.14. Создание таймеров. 404
7.15. Параллельное программирование с использованием потоков. 409
7.16. Активизация фоновых методов. 415
7.17. Выход из потоков и таймеров. 416
Глава 8. Безопасность. 420
8.0. Введение. 420
8.1. Обеспечение безопасности и защиты в приложениях. 427
8.2. Хранение значений в связке ключей. 431
8.3. Нахождение значений в связке ключей. 433
8.4. Обновление значений в связке ключей. 438
8.5. Удаление значений из связки ключей. 441
8.6. Совместное использование данных из связки ключей
в нескольких приложениях. 443
8.7. Запись и считывание информации связки ключей из iCloud. 449
8.8. Безопасное хранение файлов в песочнице приложения. 452
8.9. Защита пользовательского интерфейса. 455
Глава 9. Core Location и карты. 458
9.0. Введение. 458
9.1. Создание картографического вида. 459
9.2. Обработка событий картографического вида. 461
9.3. Отметка местоположения устройства. 462
9.4. Отображение маркеров в картографическом виде. 464
9.5. Отображение разноцветных маркеров в картографическом виде. 468
9.6. Отображение пользовательских маркеров в картографическом виде. 474
10 Оглавление
9.7. Преобразование обычных адресов в данные широты и долготы. 477
9.8. Преобразование данных широты и долготы в обычные адреса. 478
9.9. Поиск в картографическом виде. 481
9.10. Отображение направлений на карте. 484
Глава 10. Реализация распознавания жестов. 490
10.0. Введение. 490
10.1. Обнаружение жестов смахивания. 492
10.2. Обнаружение жестов вращения. 494
10.3. Обнаружение жестов панорамирования и перетаскивания. 498
10.4. Обнаружение жестов долгого нажатия. 500
10.5. Обнаружение жестов-нажатий. 503
10.6. Обнаружение щипка. 505
Глава 11. Сетевые функции, JSON, XML и Twitter. 508
11.0. Введение. 508
11.1. Асинхронная загрузка с применением NSURLConnection. 508
11.2. Обработка задержек при асинхронных соединениях. 511
11.3. Синхронная загрузка с применением NSURLConnection. 513
11.4. Изменение URL-запроса с применением NSMutableURLRequest. 515
11.5. Отправка запросов HTTP GET с применением NSURLConnection. 516
11.6. Отправка запросов HTTP POST с применением NSURLConnection. 518
11.7. Отправка запросов HTTP DELETE с применением NSURLConnection. 520
11.8. Отправка запросов HTTP PUT с применением NSURLConnection. 521
11.9. Сериализация массивов и словарей в JSON. 523
11.10. Десериализация нотации JSON в массивы и словари. 525
11.11. Включение в приложения функций социального обмена
контентом. 529
11.12. Синтаксический разбор XML с помощью NSXMLParser. 532
Глава 12. Управление файлами и каталогами. 538
12.0. Введение. 538
12.1. Определение пути к самым полезным каталогам на диске. 540
12.2. Запись информации в файлы и считывание информации
из файлов. 542
12.3. Создание каталогов на диске. 547
12.4. Перечисление файлов и каталогов. 549
12.5. Удаление файлов и каталогов. 554
12.6. Сохранение объектов в файлах. 557
Глава 13. Камера и библиотека фотографий. 561
13.0. Введение. 561
13.1. Обнаружение и испытание камеры. 563
13.2. Фотографирование с помощью камеры. 568
13.3. Запись видео с помощью камеры. 572
Оглавление 11
13.4. Сохранение снимков в библиотеке фотографий. 576
13.5. Сохранение видео в библиотеке фотографий. 579
13.6. Получение фото и видео из библиотеки фотографий. 582
13.7. Получение ресурсов из библиотеки ресурсов. 584
13.8. Редактирование видео на устройстве с операционной
системой iOS. 592
Глава 14. Многозадачность. 597
14.0. Введение. 597
14.1. Обнаружение доступности многозадачности. 597
14.2. Выполнение долгосрочной задачи в фоновом режиме. 599
14.3. Добавление возможностей фонового обновления в приложения. 603
14.4. Воспроизведение аудио в фоновом режиме. 612
14.5. Обработка геолокационных изменений в фоновом режиме. 615
14.6. Сохранение и загрузка состояния приложений iOS,
использующих многозадачность. 618
14.7. Управление сетевыми соединениями в фоновом режиме. 622
14.8. Отказ от многозадачности. 625
Глава 15. Уведомления. 627
15.0. Введение. 627
15.1. Отправка уведомлений. 628
15.2. Слушание уведомлений и реагирование на них. 630
15.3. Слушание уведомлений, поступающих с клавиатуры,
и реагирование на них. 634
15.4. Планирование локальных уведомлений. 641
15.5. Слушание локальных уведомлений и реагирование на них. 645
15.6. Обработка локальных системных уведомлений. 648
15.7. Настройка приложения для получения пуш-уведомлений. 652
15.8. Доставка пуш-уведомлений в приложение. 658
15.9. Реагирование на пуш-уведомления. 666
Глава 16. Фреймворк Core Data. 668
16.0. Введение. 668
16.1. Создание модели Core Data с помощью Xcode. 670
16.2. Генерирование файлов классов для сущностей Core Data. . . . . . . . 673
16.3. Создание и сохранение данных с помощью Core Data. 677
16.4. Считывание данных из Core Data. 679
16.5. Удаление данных из Core Data. 682
16.6. Сортировка данных в Core Data. 685
16.7. Оптимизация доступа к данным в табличных видах. 687
16.8. Реализация отношений в Core Data. 694
16.9. Выборка данных в фоновом режиме. 700
16.10. Использование специальных типов данных в модели Core Data. 705
12 Оглавление
Глава 17. Графика и анимация. 710
17.0. Введение. 710
17.1. Перечисление и загрузка шрифтов. 716
17.2. Отрисовка текста. 717
17.3. Создание, установка и использование цветов. 719
17.4. Отрисовка изображений. 724
17.5. Создание адаптивных изображений. 727
17.6. Отрисовка линий. 732
17.7. Создание путей. 740
17.8. Отрисовка прямоугольников. 743
17.9. Добавление теней к фигурам. 748
17.10. Отрисовка градиентов. 754
17.11. Перемещение фигур, нарисованных в графических
контекстах. 762
17.12. Масштабирование фигур, нарисованных в графических
контекстах. 767
17.13. Вращение фигур, нарисованных в графических контекстах. 769
17.14. Анимирование и перемещение видов. 770
17.15. Анимирование и масштабирование видов. 779
17.16. Анимирование и вращение видов. 781
17.17. Получение изображения со скриншотом вида. 782
Глава 18. Фреймворк Core Motion. 785
18.0. Введение. 785
18.1. Обнаружение доступности акселерометра. 786
18.2. Обнаружение доступности гироскопа. 788
18.3. Получение данных акселерометра. 789
18.4. Обнаружение встряхивания устройства с iOS. 792
18.5. Получение данных гироскопа. 793
Глава 19. Фреймворк Pass Kit. 796
19.0. Введение. 796
19.1. Создание сертификатов Pass Kit. 799
19.2. Создание файлов талонов. 805
19.3. Подготовка пиктограмм и изображений для талонов. 813
19.4. Подготовка талонов к цифровому подписыванию. 814
19.5. Цифровое подписывание талонов. 817
19.6. Распространение талонов по электронной почте. 821
19.7. Распространение талонов с помощью веб-сервисов. 823
19.8. Настройка возможности доступа к талонам в приложениях,
работающих на устройстве с операционной системой iOS. 824
19.9. Взаимодействие с Passbook с помощью программирования. 830