Программирование iOS 14
Описание книги
Если вы знакомы с основами Swift, Xcode и фреймворка Cocoa, эта книга предоставляет структурированное объяснение всех основных компонентов реального мира iOS-приложений. Благодаря глубокому изучению и большому количеству примеров кода вы узнаете, как создавать представления, управлять контроллерами представлений и добавлять функции из платформ iOS.
1. Создавайте, упорядочивайте, рисуйте, накладывайте и анимируйте виды, которые реагируют на прикосновение
2. Используйте контроллеры представления для управления несколькими экранами интерфейса
3. Основные классы интерфейса для представлений прокрутки, представлений таблиц, представлений коллекций, текста, всплывающих окон, разделенных представлений, веб-представлений и элементов управления.
4. Погрузитесь в фреймворки для звука, видео, карт и датчиков
Доступ к пользовательским библиотекам: музыка, фотографии, контакты и календарь
5. Изучите дополнительные темы, включая файлы, сети и потоки.
Описание книги
Если вы знакомы с основами Swift, Xcode и фреймворка Cocoa, эта книга предоставляет структурированное объяснение всех основных компонентов реального мира iOS-приложений. Благодаря глубокому изучению и большому количеству примеров кода вы узнаете, как создавать представления, управлять контроллерами представлений и добавлять функции из платформ iOS.
1. Создавайте, упорядочивайте, рисуйте, накладывайте и анимируйте виды, которые реагируют на прикосновение
2. Используйте контроллеры представления для управления несколькими экранами интерфейса
3. Основные классы интерфейса для представлений прокрутки, представлений таблиц, представлений коллекций, текста, всплывающих окон, разделенных представлений, веб-представлений и элементов управления.
4. Погрузитесь в фреймворки для звука, видео, карт и датчиков
Доступ к пользовательским библиотекам: музыка, фотографии, контакты и календарь
5. Изучите дополнительные темы, включая файлы, сети и потоки.
👍28🔥9❤4
Концепция жизни программы
В контексте модульных языков или языков с ООП — программа рождается, когда появляется минимальный модуль/класс. Затем, после этапа написания некоторого программного кода, программа передается компилятору. Компилятор обеспечивает т.н. compile-time — время компиляции. В результате выполнения процесса компиляции мы получаем компилят (то есть непосредственный результат обработки нашего исходного кода). Во время компиляции наш исходный код влияет на работу компилятора по определенным законам, которые выражены в коде компилятора.
После получения компилята, над ним, сразу или отложенно должен быть исполнен процесс связывания. Возникает время загрузки - load - time.
Запуск и дальнейшая работа. Наиболее известные широкой публике этапы. Представлены временем инициализации (init-time) и временем исполнения (run-time). В сущности, результат работы этого этапа жизненного цикла и является обычно непосредственной целью написания программы. Отдельным важным временем жизни программы является посмертное время (death-time), в которое, вопреки распространенным представлениям тоже является частью жизненного цикла программы.
В контексте модульных языков или языков с ООП — программа рождается, когда появляется минимальный модуль/класс. Затем, после этапа написания некоторого программного кода, программа передается компилятору. Компилятор обеспечивает т.н. compile-time — время компиляции. В результате выполнения процесса компиляции мы получаем компилят (то есть непосредственный результат обработки нашего исходного кода). Во время компиляции наш исходный код влияет на работу компилятора по определенным законам, которые выражены в коде компилятора.
После получения компилята, над ним, сразу или отложенно должен быть исполнен процесс связывания. Возникает время загрузки - load - time.
Запуск и дальнейшая работа. Наиболее известные широкой публике этапы. Представлены временем инициализации (init-time) и временем исполнения (run-time). В сущности, результат работы этого этапа жизненного цикла и является обычно непосредственной целью написания программы. Отдельным важным временем жизни программы является посмертное время (death-time), в которое, вопреки распространенным представлениям тоже является частью жизненного цикла программы.
👍10🔥3❤2
iOS Нотификации. Подписка и рассылка
Нотификации в приложении генерируются из-за событий в самом приложении (например, по таймеру) или по сообщению с сервера. Первые называются локальными, а вторые – пуш-нотификациями.
Пуш-нотификации работают через APNs (Apple Push Notification service). Для отправки сообщения пользователю нужно сформировать запрос к серверу APNs. Это делается разными способами.
Через token соединение.
Через соединение с помощью сертификата.
Статья с практическим примером как реализовать разные виды уведомлений.
Нотификации в приложении генерируются из-за событий в самом приложении (например, по таймеру) или по сообщению с сервера. Первые называются локальными, а вторые – пуш-нотификациями.
Пуш-нотификации работают через APNs (Apple Push Notification service). Для отправки сообщения пользователю нужно сформировать запрос к серверу APNs. Это делается разными способами.
Через token соединение.
Через соединение с помощью сертификата.
Статья с практическим примером как реализовать разные виды уведомлений.
👍14❤4🔥2
Хранение данных Core Data.
Используйте Core Data для сохранения постоянных данных вашего приложения для использования в автономном режиме, для кэширования временных данных и для добавления функций отмены в ваше приложение на одном устройстве. Для синхронизации данных на нескольких устройствах в одной учетной записи. iCloud Core Data автоматически отображает вашу схему в контейнере CloudKit.
С помощью редактора моделей данных Core Data вы определяете типы и взаимосвязи ваших данных и создаете соответствующие определения классов. Затем Core Data может управлять экземплярами объектов во время выполнения для обеспечения следующих функций.
Предоставляю вам материал, который поможет пощупать нативный фрейморк от Apple, понять что это и как использовать на практике. В данном материале вы создадите простой To-Do лист без использования сториборда. Хранить данные будете в базе, используя Core Data.
Используйте Core Data для сохранения постоянных данных вашего приложения для использования в автономном режиме, для кэширования временных данных и для добавления функций отмены в ваше приложение на одном устройстве. Для синхронизации данных на нескольких устройствах в одной учетной записи. iCloud Core Data автоматически отображает вашу схему в контейнере CloudKit.
С помощью редактора моделей данных Core Data вы определяете типы и взаимосвязи ваших данных и создаете соответствующие определения классов. Затем Core Data может управлять экземплярами объектов во время выполнения для обеспечения следующих функций.
Предоставляю вам материал, который поможет пощупать нативный фрейморк от Apple, понять что это и как использовать на практике. В данном материале вы создадите простой To-Do лист без использования сториборда. Хранить данные будете в базе, используя Core Data.
❤14👍2
Как вы знаете, толковых источников с iOS контентом не так уж много, поэтому рекомендую обратить внимание на канал нашего коллеги Mobile Native. Там Артём публикует различные материалы, которые будут полезны разного уровня разработчикам.
Вот несколько топовых постов с канала
👉 Instagram System Design
👉 Deadlocks in Swift explained
👉 Concurrency in iOS: GCD
Подписывайтесь → @mobile_native
Вот несколько топовых постов с канала
👉 Instagram System Design
👉 Deadlocks in Swift explained
👉 Concurrency in iOS: GCD
Подписывайтесь → @mobile_native
❤3👍3🔥2🤔1
iOS вопросы на интервью
Время важно. Бесконечный поиск, чтобы попрактиковаться в вопросах интервью для iOS, утомляет и отнимает много времени. Цель этой статьи — собрать как можно больше вопросов для интервью с iOS вместе с ответами, чтобы сэкономить ваше время.
Предлагаю освежить свои знания, а кому-то узнать что-то новое для себя в данной статьте.
Время важно. Бесконечный поиск, чтобы попрактиковаться в вопросах интервью для iOS, утомляет и отнимает много времени. Цель этой статьи — собрать как можно больше вопросов для интервью с iOS вместе с ответами, чтобы сэкономить ваше время.
Предлагаю освежить свои знания, а кому-то узнать что-то новое для себя в данной статьте.
❤21👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Разработка анимации на iOS — восемь примеров интерфейса с кодом
На WWDC 2018 дизайнеры Apple представили доклад под названием «Разработка текучих интерфейсов», в котором раскрыли детали жестового интерфейса IPhone X.
Если вы попытаетесь реализовать эти идеи на практике, то обнаружите пропасть между идеей и тем, как её воплотить
Цель данной статьи — преодолеть эту пропасть, представив рабочий код для всех примеров из презентации.
Что будет в этой статье:
1. Краткое описание презентации «Проектирование текучих интерфейсов».
2. Восемь текучих интерфейсов, теория дизайна, на которой они строятся, и код для их создания.
3. Практические рекомендации для дизайнеров и разработчиков.
На WWDC 2018 дизайнеры Apple представили доклад под названием «Разработка текучих интерфейсов», в котором раскрыли детали жестового интерфейса IPhone X.
Если вы попытаетесь реализовать эти идеи на практике, то обнаружите пропасть между идеей и тем, как её воплотить
Цель данной статьи — преодолеть эту пропасть, представив рабочий код для всех примеров из презентации.
Что будет в этой статье:
1. Краткое описание презентации «Проектирование текучих интерфейсов».
2. Восемь текучих интерфейсов, теория дизайна, на которой они строятся, и код для их создания.
3. Практические рекомендации для дизайнеров и разработчиков.
❤20👍6👏2
Шаблон координатора с TabBar контроллером
Шаблон координатора - это шаблон в iOS, отвечающий за управление потоками приложений и навигацию между ViewControllers. Это помогает сделать навигационные потоки более управляемыми и более многократно используемыми, а также позволяет нам настраивать их по мере необходимости.
В данной статье автор показывает как можно это реализовать, используя наиболее распространенные потоки: поток входа и основной поток(который включает TabBar контроллер). Используя координатор, мы можем определять потоки приложений и управлять навигацией между ViewController. Читать и смотреть код, в данной статье
Шаблон координатора - это шаблон в iOS, отвечающий за управление потоками приложений и навигацию между ViewControllers. Это помогает сделать навигационные потоки более управляемыми и более многократно используемыми, а также позволяет нам настраивать их по мере необходимости.
В данной статье автор показывает как можно это реализовать, используя наиболее распространенные потоки: поток входа и основной поток(который включает TabBar контроллер). Используя координатор, мы можем определять потоки приложений и управлять навигацией между ViewController. Читать и смотреть код, в данной статье
❤12👍1👏1
Swinject: внедрения зависимостей для Swift
Swinject— это легковесный фреймворк внедрения зависимостей для Swift. Внедрение зависимостей (Dependency injection, DI) — это шаблон проектирования, который реализует инверсию управления (IoC) для разрешения зависимостей.
В этом шаблоне Swinject помогает разделить ваше приложение на слабо связанные компоненты, которые легче разрабатывать, тестировать и поддерживать. Swinject основан на системе универсальных типов Swift и функциях первого класса, позволяющих просто и свободно определять зависимости вашего приложения.
Swinject на GitHub: https://github.com/Swinject/Swinject
Swinject— это легковесный фреймворк внедрения зависимостей для Swift. Внедрение зависимостей (Dependency injection, DI) — это шаблон проектирования, который реализует инверсию управления (IoC) для разрешения зависимостей.
В этом шаблоне Swinject помогает разделить ваше приложение на слабо связанные компоненты, которые легче разрабатывать, тестировать и поддерживать. Swinject основан на системе универсальных типов Swift и функциях первого класса, позволяющих просто и свободно определять зависимости вашего приложения.
Swinject на GitHub: https://github.com/Swinject/Swinject
❤11👍5🤔1😱1
Frame и Bounds
Frame - положение и размер view с использованием системы координат родительского представления (важно для размещения представления в superview).
Bounds - местоположение и размер view с использованием его собственной системы координат (важно для размещения содержимого View или subview внутри него).
Другими словами можно сказать, что Frame - это рамка, Bounds - картинка внутри рамки.
- IntrinsicContentSize (свойство у View) - это размер ĸоторый описывает минимальное пространство для полного отображения ĸонтента.
- Content hugging prioriti - сопротивление на увеличение.
- Content compression resistance - сопротивление на уменьшение.
Другими словами можно сказать, что Frame - это рамка, Bounds - картинка внутри рамки.
- IntrinsicContentSize (свойство у View) - это размер ĸоторый описывает минимальное пространство для полного отображения ĸонтента.
- Content hugging prioriti - сопротивление на увеличение.
- Content compression resistance - сопротивление на уменьшение.
👍21❤5🔥3
Ответ:
Инкапсуляция - это сокрытие реализации класса и отделение его внешнего представления от внутреннего.
Чуть сложнее.
Инкапсуляция – это свойство системы, позволяющее объединить данные и методы, работающие с ними в классе и скрыть детали реализации от пользователя, открыв только то, что необходимо
[Сложность Junior 👶]
👍34🔥4🤔2👏1🎉1
Синтаксический анализ JSON в Swift объясняется примерами кода
Синтаксический анализ JSON в Swift является обычным делом. Почти каждое приложение декодирует JSON для отображения данных в визуализированном виде. Синтаксический анализ JSON, безусловно, является одной из основ, которые вы должны изучить как разработчик iOS.
Декодирование JSON в Swift довольно простое и не требует каких-либо внешних зависимостей. Базовых API, которые поставляются с Swift, будет достаточно, чтобы выполнить эту работу. В данной статье Вас ждут примеры преоброзования из JSON в модели данных, какие протоколы использовать и много много другого.
Статья
Синтаксический анализ JSON в Swift является обычным делом. Почти каждое приложение декодирует JSON для отображения данных в визуализированном виде. Синтаксический анализ JSON, безусловно, является одной из основ, которые вы должны изучить как разработчик iOS.
Декодирование JSON в Swift довольно простое и не требует каких-либо внешних зависимостей. Базовых API, которые поставляются с Swift, будет достаточно, чтобы выполнить эту работу. В данной статье Вас ждут примеры преоброзования из JSON в модели данных, какие протоколы использовать и много много другого.
Статья
👍11❤6🔥2
Зарплаты разработчиков в первой половине 2022: языки и квалификации
Больше всего выросли зарплаты у разработчиков Delphi — на 30% ко второму полугодию 2021. Не изменились зарплаты у тех, кто работает с JS, PHP и Swift.
В первой половине 2022 года разработчики-стажеры зарабатывали 35 000 ₽. Джуны —
70 000 ₽, мидлы — 150 000 ₽, сеньоры — 240 000 ₽, а лиды — 270 000 ₽.
Если сравнивать второе полугодие 2021 года и первое 2022, то зарплаты выросли у всех, кроме стажеров — (-13%). Самый большой рост был у джунов — на 17%.
Иследование можно посмотреть в данной статье.
Больше всего выросли зарплаты у разработчиков Delphi — на 30% ко второму полугодию 2021. Не изменились зарплаты у тех, кто работает с JS, PHP и Swift.
В первой половине 2022 года разработчики-стажеры зарабатывали 35 000 ₽. Джуны —
70 000 ₽, мидлы — 150 000 ₽, сеньоры — 240 000 ₽, а лиды — 270 000 ₽.
Если сравнивать второе полугодие 2021 года и первое 2022, то зарплаты выросли у всех, кроме стажеров — (-13%). Самый большой рост был у джунов — на 17%.
Иследование можно посмотреть в данной статье.
👍7❤2🔥1
Расширение своего кругозора
Всем привет! Рекомендую канал своего хорошего друга Senior Androind Dev. Денис, владелец канала, очень предан своему делу. В разработке он более 7 лет. У него вы лично можете взять консультацию, поучаствовать в собеседовании, задать вопрос абсолютно бесплатно.
Вот некоторые статьи из канала Дениса
1. Как добавить функционал сразу в несколько Activity без использования базового класса?
2. Что такое переопределение?
Рекомендую, подписывайтесь https://t.iss.one/droidev
Всем привет! Рекомендую канал своего хорошего друга Senior Androind Dev. Денис, владелец канала, очень предан своему делу. В разработке он более 7 лет. У него вы лично можете взять консультацию, поучаствовать в собеседовании, задать вопрос абсолютно бесплатно.
Вот некоторые статьи из канала Дениса
1. Как добавить функционал сразу в несколько Activity без использования базового класса?
2. Что такое переопределение?
Рекомендую, подписывайтесь https://t.iss.one/droidev
Telegram
DroidDev : собесы, вопросы, новости
#Middle #Android #Kotlin #Delegate
Как добавить функционал сразу в несколько Activity без использования базового класса?
[Сложность 👨🦰Middle]
Если есть сложности с ответом, то советую прочитать супер короткую статью:
👉 Android Nightmares 😱 | Base classes…
Как добавить функционал сразу в несколько Activity без использования базового класса?
[Сложность 👨🦰Middle]
Если есть сложности с ответом, то советую прочитать супер короткую статью:
👉 Android Nightmares 😱 | Base classes…
👏5❤2👍2
Жизненный цикл ViewController
👉 init
👉 loadView - создание view
👉 viewDidLoad - viewController создан, Outlets на месте
👉 viewWillAppear - view будет добавлено в иерархию отображения
👉 viewWillLayoutSubViews - каждый раз, когда изменяется frame
👉 viewDidLayoutSubviews - view только что разместило свои subview
👉 viewDidAppear - после того, как ViewController появляется на экране
👉 viewWillDisappear - до того, как viewController будет удален с экрана
👉viewDidDisappear - после удаления viewController'a с экрана
👉 deinit
Почитать cтатью про жизненный цикл ViewController
👉 init
👉 loadView - создание view
👉 viewDidLoad - viewController создан, Outlets на месте
👉 viewWillAppear - view будет добавлено в иерархию отображения
👉 viewWillLayoutSubViews - каждый раз, когда изменяется frame
👉 viewDidLayoutSubviews - view только что разместило свои subview
👉 viewDidAppear - после того, как ViewController появляется на экране
👉 viewWillDisappear - до того, как viewController будет удален с экрана
👉viewDidDisappear - после удаления viewController'a с экрана
👉 deinit
Почитать cтатью про жизненный цикл ViewController
👍54❤9🤔2
Как работает массив в Swift
Массив — это набор элементов одного типа, которые можно устанавливать и извлекать через непрерывный ряд целых чисел, так называемые индексы.
Эти индексы, которые в большинстве компьютерных языков начинаются с нуля, определяют, где в массиве происходит действие.
О массивах нужно знать три вещи:
1. Во-первых, массивы могут содержать практически все, что угодно: числа, строки, объекты и даже другие массивы.
2. Во-вторых, массивы имеют фиксированный размер. Вы не видите этого в Swift, потому что в Swift, когда мы создаем множество, мы не указываем его размер. Но во многих других компьютерных языках при инициализации массива вы должны дать ему начальный размер.
3. В-третьих, у массивов есть уникальная возможность случайного доступа к данным через индекс
Вывод:
1. Массив имеет фиксированный размер.
2. Рандомный доступ О(1).
3. Вставка/ удаление – О(n).
4. Массивы могут сокращаться и расти О(n).
5. Swift проделывает большую работу за нас при создании массива.
Массив — это набор элементов одного типа, которые можно устанавливать и извлекать через непрерывный ряд целых чисел, так называемые индексы.
Эти индексы, которые в большинстве компьютерных языков начинаются с нуля, определяют, где в массиве происходит действие.
О массивах нужно знать три вещи:
1. Во-первых, массивы могут содержать практически все, что угодно: числа, строки, объекты и даже другие массивы.
2. Во-вторых, массивы имеют фиксированный размер. Вы не видите этого в Swift, потому что в Swift, когда мы создаем множество, мы не указываем его размер. Но во многих других компьютерных языках при инициализации массива вы должны дать ему начальный размер.
3. В-третьих, у массивов есть уникальная возможность случайного доступа к данным через индекс
Вывод:
1. Массив имеет фиксированный размер.
2. Рандомный доступ О(1).
3. Вставка/ удаление – О(n).
4. Массивы могут сокращаться и расти О(n).
5. Swift проделывает большую работу за нас при создании массива.
👍24🔥6❤5🤔2
Делаем плавный скролл в нагруженных таблицах
Для многих пользователей важен перфоманс — плавность прокрутки и производительность отрисовки, — потому что это обеспечивает комфортное использование приложения.
Получается, реализация плавного скролла является одной из наших приоритетных задач, решить которую очень непросто.
В данной статье рассматриваются технические аспекты работы со сложными таблицами. Кстати говоря, работа с коллекциями будет аналогична.
1. Повторное использование ячеек/хедеров и футеров — первый и важный шаг оптимизации
2. Уменьшить общее время загрузки и вычислений, их перевод в Background-очереди — значит упростить объем подсчетов
3. Использование стандартных компонентов Core Animation для отрисовки ячеек позволит существенно ускорить процесс отображения и повысить производительность
4. Кеширование данных для ячеек
5. Нет ничего плохого в комбинации Auto Layout и ручного подсчета. Там, где не хватает производительности — использовать ручной подсчет
Для многих пользователей важен перфоманс — плавность прокрутки и производительность отрисовки, — потому что это обеспечивает комфортное использование приложения.
Получается, реализация плавного скролла является одной из наших приоритетных задач, решить которую очень непросто.
В данной статье рассматриваются технические аспекты работы со сложными таблицами. Кстати говоря, работа с коллекциями будет аналогична.
Способы оптимизации таблицы, рассмотренные в статье:
1. Повторное использование ячеек/хедеров и футеров — первый и важный шаг оптимизации
2. Уменьшить общее время загрузки и вычислений, их перевод в Background-очереди — значит упростить объем подсчетов
3. Использование стандартных компонентов Core Animation для отрисовки ячеек позволит существенно ускорить процесс отображения и повысить производительность
4. Кеширование данных для ячеек
5. Нет ничего плохого в комбинации Auto Layout и ручного подсчета. Там, где не хватает производительности — использовать ручной подсчет
👍21❤5🔥4
План развития iOS-разработчика с ссылками на материалы обучения
1. Основы программирования
Если Вы, являетесь совсем новичком, я бы порекомендовал изучить принципы программирования. Курс CS50 для этого идеально подходит. Это серия лекций по Computer Science от Гарвардского университета.
2. Основы Swift
Смотрим следующий плейлист по основам и делаем домашнее задание. Параллельно читаем книгу Василия Усова.
3. Фреймворк UIKit
Рекомендую следующий плейлист с выполнением домашних заданий. Обязательно обращаемся к нашей документации от Apple. Параллельно читаем книгу Мет Ньберга.
4. Работа с сетью. Клиент-серверное приложение
Читаем про работу с сетью, смотрим туториалы, видео и хороший мини плейлист
Берём публичное API и работаем с ним. Создаём приложение используя знания UIKit и сеть.
5. Архитектурные паттерны
Переходим от MVC к другим архитектурам. Мало уметь писать код, он еще должен быть масштабируемый, гибкий и элегантный. Для этого умные дяди инженеры придумали паттерны проектирования — типовые решения для типовых архитектурных задач в коде. Они применимы к любому языку программирования и представляют собой, по большей части, концепции, в которых описываются разные подходы. Советую хороший сайт. А так же, книгу "Совершенный код".
6. Многопоточность. Производительность приложения
Смотрим данный плейлист. Внедряем технологии в ваши проекты.
7. Пишем проект. Учим теорию.
Если вы дошли до 7 пункта, то данный набор знаний, вам хватит написать приложение. Придумайте дизайн, идею и в бой! Так же делюсь с вами ссылкой , где вы можете почитать и узнать что-то новое.
А если, вы хотите каждый день узнавать интерессные новости из мира iOS, подписывайтесь на канал EasySwift
1. Основы программирования
Если Вы, являетесь совсем новичком, я бы порекомендовал изучить принципы программирования. Курс CS50 для этого идеально подходит. Это серия лекций по Computer Science от Гарвардского университета.
2. Основы Swift
Смотрим следующий плейлист по основам и делаем домашнее задание. Параллельно читаем книгу Василия Усова.
3. Фреймворк UIKit
Рекомендую следующий плейлист с выполнением домашних заданий. Обязательно обращаемся к нашей документации от Apple. Параллельно читаем книгу Мет Ньберга.
4. Работа с сетью. Клиент-серверное приложение
Читаем про работу с сетью, смотрим туториалы, видео и хороший мини плейлист
Берём публичное API и работаем с ним. Создаём приложение используя знания UIKit и сеть.
5. Архитектурные паттерны
Переходим от MVC к другим архитектурам. Мало уметь писать код, он еще должен быть масштабируемый, гибкий и элегантный. Для этого умные дяди инженеры придумали паттерны проектирования — типовые решения для типовых архитектурных задач в коде. Они применимы к любому языку программирования и представляют собой, по большей части, концепции, в которых описываются разные подходы. Советую хороший сайт. А так же, книгу "Совершенный код".
6. Многопоточность. Производительность приложения
Смотрим данный плейлист. Внедряем технологии в ваши проекты.
7. Пишем проект. Учим теорию.
Если вы дошли до 7 пункта, то данный набор знаний, вам хватит написать приложение. Придумайте дизайн, идею и в бой! Так же делюсь с вами ссылкой , где вы можете почитать и узнать что-то новое.
А если, вы хотите каждый день узнавать интерессные новости из мира iOS, подписывайтесь на канал EasySwift
🔥52❤8👍7🎉3
This media is not supported in your browser
VIEW IN TELEGRAM
UICollectionViewLayout для пиццы из разных половинок
Как работает UICollectionView
UICollectionView — это сабкласс от UIScrollView, а он — это обычный UIView, у которого от свайпа меняется bounds. Перемещая его .origin, мы смещаем видимую зону, а меняя .size влияем на масштаб.
При смещении экрана UICollectionView создаёт (или повторно использует) ячейки, а правила их отображения описаны в UICollectionViewLayout. С ним мы и будем работать.
Возможности у UICollectionViewLayout большие, можно задать любое отношение между ячейками. Например, можно сделать очень похоже на то, что умеет iCarousel.
Лейаут не работает с ячейками напрямую. Вместо них используются UICollectionViewLayoutAttributes — это набор параметров, которые будут применены к ячейке. Frame — основной из них, отвечает за положение и размер ячейки. Другие параметры: прозрачность, смещение, положение в глубине экрана и т.д.
В данной статье инженеры из Додо Пиццы рассказывают о том, как они написали лейаут для iOS, с чем столкнулись и от чего отказались.
Как работает UICollectionView
UICollectionView — это сабкласс от UIScrollView, а он — это обычный UIView, у которого от свайпа меняется bounds. Перемещая его .origin, мы смещаем видимую зону, а меняя .size влияем на масштаб.
При смещении экрана UICollectionView создаёт (или повторно использует) ячейки, а правила их отображения описаны в UICollectionViewLayout. С ним мы и будем работать.
Возможности у UICollectionViewLayout большие, можно задать любое отношение между ячейками. Например, можно сделать очень похоже на то, что умеет iCarousel.
Лейаут не работает с ячейками напрямую. Вместо них используются UICollectionViewLayoutAttributes — это набор параметров, которые будут применены к ячейке. Frame — основной из них, отвечает за положение и размер ячейки. Другие параметры: прозрачность, смещение, положение в глубине экрана и т.д.
В данной статье инженеры из Додо Пиццы рассказывают о том, как они написали лейаут для iOS, с чем столкнулись и от чего отказались.
👍20🔥8❤5🥰2