Обновить
5.86

Swift *

Открытый объектно-ориентированный язык

Сначала показывать
Порог рейтинга
Уровень сложности

SwiftUI ScrollView и параллакс без тормозов

Время на прочтение8 мин
Охват и читатели4.9K

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

В классическом UIScrollView из UIKit можно реализовать протокол UIScrollViewDelegate - метод scrollViewDidScroll(_ scrollView: UIScrollView) скажет нам, насколько сместился основной контент. Но в SwiftUI ScrollView не имеет делегата, поэтому ловить изменения нужно другими способами.

Я нашёл способ обрабатывать смещение - GeometryReader внутри ScrollView:

Читать далее

SwiftUI в 2022. Что нового?

Время на прочтение4 мин
Охват и читатели5.8K

Всем привет, с вами я, Наиль Габутдинов, iOS разработчик.

Apple выпустила первый SwiftUI в 2019 году, предлагая тем самым новый подход создания приложений в декларативном стиле. SwiftUI 4.0, представленный этим летом на WWDC 2022 вместе с iOS 16 и macOS 13 включает в себя много нововведений для более качественных и универсальных приложений под разные платформы Apple с меньшим количеством кода.

Давайте посмотрим, что нового.

Читать далее

Как превратить единственный SwiftUI контейнер в dropDestination для нескольких Transferable типов?

Время на прочтение4 мин
Охват и читатели1.5K

Новый протокол  Transferable пришел на замену классу NSItemProvider в iOS 16+, macOS 13+ (Ventura и новее), watchOS 9.0+ и tvOS 16+. Познакомиться с некоторыми аспектами применения протокола  Transferable можно в постах Протокол Transferable меняет правила игры для Drag & Drop в SwiftUI и Протокол Transferable в SwiftUI — передача альтернативного контента с помощью ProxyRepresentation.

Проблема в том, что при использовании нового протокола Transferable и нового View модификатора .dropDestination (for: action: isTargeted:); его параметр for не принимает несколько ТИПов "сбрасываемых" объектов одновременно, как это делает выше приведенный View модификатор .onDrop (of: [.plainText, .url, .image] ...).

С помощью перечисления enum DropItem, куда мы включили все возможные объекты (текст StringURL-адрес, изображение в виде двоичного файла Data), нам удалось в SwiftUI с помощью нового протокола Transferable обеспечить перетаскивание и "сброс" (Drag & Drop) в один и тот же контейнер (например,ZStack) различных ТИПов объектов.

Читать далее

Статические и динамические фреймворки на iOS — обсуждение с ChatGPT

Время на прочтение11 мин
Охват и читатели5.3K

Статические и динамические фреймворки на iOS - обсуждение с ChatGPT

Как и большинство людей в мире технологий, мы экспериментировали с ChatGPT и хотели посмотреть, как он справится с низкоуровневыми техническими деталями. Мы попросили ChatGPT написать блог о статических и динамических фреймворках в iOS. Здесь - его ответ, а также то, что он сделал правильно, а что нет.

Читать далее

Расширяя Xcode с помощью включений

Время на прочтение6 мин
Охват и читатели1.2K

Расширяя Xcode с помощью включений

В этом посте я описываю техническую настройку небольшого языкового эксперимента, который я разработал, чтобы помочь себе в работе над пользовательскими инструментами Xcode.

Читать далее

Туториал по Встроенным Подпискам в iOS с помощью StoreKit 2 и Swift

Время на прочтение34 мин
Охват и читатели21K

Туториал по Встроенным Подпискам в iOS с помощью StoreKit 2 и Swift

Пошаговое руководство по созданию рабочего примера приложения с подписками на SwiftUI.

Читать далее

Будущее Foundation

Время на прочтение2 мин
Охват и читатели1.8K

Будущее Foundation

9 ДЕКАБРЯ 2022 г. Тони Паркер

Фреймворк Foundation используется почти во всех проектах Swift. Он обеспечивает как базовый уровень функциональности для таких основных элементов, как строки, коллекции и даты, так и устанавливает соглашения для написания отличного Swift-кода.

Читать далее

Создание собственного макета в SwiftUI. Интервалы

Время на прочтение5 мин
Охват и читатели850

Создание собственного макета в SwiftUI. Интервалы

Несколько макетов позволяют нам по-разному компоновать наши вью. Одним из важнейших факторов является расстояние между дочерними элементами конкретного макета. На этой неделе мы узнаем, как собрать пользовательский макет, позволяющий задавать определенный интервал между вью, и как соблюдать ориентированные на платформу предопределенные правила интервалов в SwiftUI.

Читать далее

Meet Transferable

Время на прочтение5 мин
Охват и читатели1.7K

На WWDC 2022 Apple представила множество интересных нововведений, одно из который — Transferable. О новом протоколе (только для SwiftUI и только для iOS 16, macOS 13 и tvOS 16?), который позволяет удобно и быстро передавать какие-либо данные как внутри приложения, так и между приложениями рассказывают разработчики студии CleverPumpkin.

Читать далее

Swift модуляризация вашего проекта

Время на прочтение2 мин
Охват и читатели3.2K

Всем привет сегодня я покажу как можно завернуть проект в spm (модуляризация)

Модуляризация — Это процесс разбиения кодовой базы на небольшие специализированные, готовые к повторному использованию модули

У меня есть небольшой проект и я хочу чтобы он был завернут в spm.

Читать далее

Приложение для бортпроводников c 23 интеграциями и работой без интернета

Время на прочтение3 мин
Охват и читатели3.7K

Как мы переводили работу бортпроводников из бумаги в приложение и внедряли фишечки для пассажиров.

Читать далее

Как устроено приложение Калькулятор на iPhone

Время на прочтение1 мин
Охват и читатели3.4K

Разберу как Apple использовали UIKit для приложения Калькулятор: Кнопки, окно ввода и жесты.

Из интересного - в клавиатуре комбинируют автолейаут и фреймы, сделали на сценах, а при повороте в альбомную ориентацию кнопки добавляются на лету. Подробнее под катом.

Читать далее

Обновление Системы ценообразования App Store: 700 новых ценовых пунктов

Время на прочтение5 мин
Охват и читатели2.1K

Обновление Системы Ценообразования App Store: 700 новых ценовых пунктов

Apple объявила об изменениях в своей системе ценообразования App Store - прочитайте об этом все.

Читать далее

Ближайшие события

Удаляем фон у фото используя CoreML

Время на прочтение6 мин
Охват и читатели5.2K

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

Узнать как вырезать фон

Создаем оберточный HStack с помощью протокола Layout SwiftUI

Время на прочтение6 мин
Охват и читатели1.9K

Создаем оберточный HStack с помощью протокола Layout SwiftUI

Компонент, который мы собираемся создать, доступен как Swift Package.

Читать далее

Моушн-инжиниринг в Масштабе

Время на прочтение8 мин
Охват и читатели562

Как Airbnb применяет декларативные шаблоны проектирования для быстрого создания плавной анимации перехода.

Читать далее

clipped() не оказывает влияния на проверку касаний

Время на прочтение2 мин
Охват и читатели1.5K

Clipped() не оказывает влияния на проверку касаний

Модификатор clipped() в SwiftUI обрезает вью до своих(модификатора) границ, скрывая все, что выходит за пределы этих границ. Но обратите внимание, что обрезание не влияет на проверку касаний (hit testing); обрезанный вью по-прежнему принимает тапы / клики за пределами видимой области.

Читать далее

Создание custom layout в SwiftUI. Кэширование

Время на прочтение2 мин
Охват и читатели1.3K

В предыдущем посте мы рассказали об основах нового протокола Layout. Сегодня я собираюсь продолжить серию постов, посвященной созданию многократно используемых custom layouts, рассказав про кэширование информации layout и настройку производительности.

SwiftUI вызывает функции вашего custom layout множество раз на протяжении всего жизненного цикла для определения различных вариантов размеров в процессе компоновки. Он кэширует несколько объектов автоматически, но вы также можете реализовать свой собственный вариант кэширования, если вам нужно улучшить производительность layout.

Читать далее