Как стать автором
Поиск
Написать публикацию
Обновить
10.7

Swift *

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

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

Установка отступов для содержимого или индикаторов прокрутки в ScrollView

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров1.4K

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

Читать далее

Отображение контента в ScrollView с конца

Уровень сложностиСредний
Время на прочтение1 мин
Количество просмотров820

В SwiftUI компонент ScrollView автоматически начинает прокрутку сверху. Однако если вы хотите создать интерфейс, аналогичный приложению "Сообщения" от Apple, вы можете настроить ScrollView так, чтобы прокрутка начиналась снизу. Для этого используется модификатор scrollPosition() с начальной привязкой к нижней части (.bottom).

Читать далее

Отображение контента за пределами ScrollView

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров964

Компонент ScrollView в SwiftUI автоматически обрезает свое содержимое, чтобы элементы прокрутки всегда оставались полностью внутри области контейнера. Однако использую модификатор scrollClipDisabled(), стандартное поведение можно изменить, отключив обрезку контента.

Читать далее

Привязка ScrollView к страницам и дочерним представлениям

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров1K

В SwiftUI компонент ScrollView по умолчанию двигается плавно, но с использованием модификаторов scrollTargetLayout() и scrollTargetBehavior() мы можем сделать так, чтобы он автоматически "привязывался" к определенным дочерним представлениям или целым страницам.

Читать далее

Макросы в Swift

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров8K

Всем привет! Меня зовут Никита Тархов, я iOS‑разработчик студии CleverPumpkin. Сегодня поговорим про макросы: что это такое, зачем нужны и где они применяются.

Читать далее

Оформление и структурирование классов в Swift

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров6.8K

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

Читать далее

Swift 5.9. Что нового?

Время на прочтение28 мин
Количество просмотров6.8K

Хотя Swift 6 уже не за горами, Apple продолжает добавлять новые и улучшенные функции в текущую версию Swift 5.x.

Swift 5.9 - это новый большой релиз, который включает в себя ряд улучшений и новых функций. К ним относятся упрощенные способы работы с операторами if и switch, макросы (то есть код, который может генерировать или трансформировать другой код), некопируемые типы (это новая функция, которая предотвращает копирование объектов определенного типа), кастомные исполнители акторов (что связано с моделью конкурентного программирования в Swift) и многое другое.

В этой статье разберем самые важные изменения этого релиза с примерами кода и пояснениями. Для воспроизведения приведенных в этой статье примеров вам понадобиться последняя версия Xcode 14 или Xcode 15 beta.

Читать далее

Изнутри: Swift макрос — #Preview

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров4.6K

Макрос #Preview в языке Swift предоставляет удобный способ создания и предварительного просмотра компонентов пользовательского интерфейса. Он позволяет разработчикам быстро и легко создавать превью для своих View, чтобы визуально оценить, как они выглядят и взаимодействуют.

Сейчас доступно много информации о том, как писать макросы, много примеров и на удивление хорошая документация. Сегодня мы будем не создавать свой макрос, а подробно рассмотрим приватные макросы, предоставляемые Apple, а именно #Preview.

Читать далее

Как я создала приложение для IPhone. Без опыта разработки на SWIFT, но с помощью ChatGPT

Уровень сложностиПростой
Время на прочтение17 мин
Количество просмотров19K

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

Читать далее

Внедряем MapKit Яндекс Карт в iOS приложение

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров8.6K

Всем привет! Меня зовут Серёжа, и я занимаюсь веб-разработкой и разработкой на iOS вот уже 5 лет. На одном из проектов мне поставили задачу: внедрить Яндекс Карты в приложение. Однако я столкнулся с тем, что в открытом доступе мало нужной и полезной информации об этой теме. Эта статья - мои способы решения задач на Swift с использованием Yandex MapKit. Делюсь с вами своим опытом!

Читать далее

Многопоточность в iOS-разработке

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров26K

Здравствуйте, уважаемые читатели Хабра!

Меня зовут Кирилл, я iOS-разработчик приложений Сбера в Студии Олега Чулакова.

Сегодня я хочу поговорить о важной теме, которая стоит в центре многих дискуссий в сообществе разработчиков, — многопоточности в Swift. Эта тема может казаться сложной и запутанной, но я уверен, что с правильным подходом и набором инструментов она станет более доступной.

В этой статье мы разберемся с основами многопоточности и познакомимся с такими инструментами Swift, как Grand Central Dispatch (GCD), OperationQueues, NSLock. А также существующими низкоуровневыми технологиями, такими как pthread и NSThread. Бонусом я расскажу про async/await. Мы обсудим, как эти инструменты помогают управлять асинхронными и параллельными операциями, и посмотрим на некоторые примеры их использования.

Приятного чтения, и давайте начнем наше путешествие в мир многопоточности Swift!

Читать далее

Немного о перечислениях в Swift

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров6.1K

Не секрет, что на сегодняшний день Swift обладает одними из самых (возможно самыми) функциональными и гибкими в настройке перечислениями. Каждый Swift-разработчик может подтвердить, что работать с ними довольно приятно и удобно. Однако, мало кто задумывается как это устроено внутри. Может показаться, что за подобную функциональность обязательно придётся заплатить либо производительностью, либо памятью, либо размером билда. На самом деле, чтобы максимально избежать подобных издержек, под капотом в языке имеется шесть разных реализаций перечислений.

Читать далее

Императивный UIKit‍ vs Декларативный SwiftUI

Время на прочтение15 мин
Количество просмотров14K

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

В этой статье я хочу помочь разработчикам приложений для iOS понять различия между императивным и декларативным подходами к программированию, а также рассмотреть плюсы и минусы фреймворков UIKit и SwiftUI. Знакомство с ними необходимо для оптимизации процесса разработки и создания продукта высокого качества.

Читать далее

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

На смену CoreData пришёл новый фреймворк SwiftData. Разбираемся, как он упрощает хранение данных

Время на прочтение7 мин
Количество просмотров9.1K

Фреймворк для хранения данных Core Data был написан еще во времена Objective-C. Многим iOS-разработчикам хотелось иметь более современный инструмент, который бы поддерживал все новые возможности языка Swift. И теперь такой инструмент появился: на WWDC 2023 представили новый фреймворк SwiftData.

Разбираемся, что из себя представляет SwiftData, и пробуем его в тестовом приложении.

Читать далее

visionOS(xrOS) сессии WWDC2023: введение в пространственные вычисления Apple

Время на прочтение6 мин
Количество просмотров3.2K

Занимаясь уже достаточно давно iOS разработкой, имея личный опыт в разработке VR устройств и собственного комплекса фотограмметрии, в этот раз я откровенно был впечатлен долгожданным анонсом Apple гарнитуры смешанной реальности Vision Pro на WWDC2023. Компанией была представлена новая платформа, по‑большому счету, со всеми уже знакомыми современными инструментами iOS‑разработки. Пазлы ARKit, RealityKit и SwiftUI наконец‑то сложились и я рад поделиться подборкой ссылок на ресурсы и стартовые материалы. Перед чтением, конечно полезно немного пофантазировать о будущих приложениях, которые обязательно изменят мир. Приготовьтесь начать погружение или добавляйте материал в закладки (которые вы так никогда и не прочитаете), поехали!

Начать погружение

UICollectionViewCompositionalLayout

Время на прочтение10 мин
Количество просмотров7.4K

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

Статья основана на документации apple Implementing Modern Collection Views.

Compositional layouts - это декларативный вид API, который позволяет нам создавать большие макеты путем объединения небольших групп макетов. Compositional layouts имеют иерархию, состоящую из Item, Group, Sections, and Layout.

Чтобы создать любой Compositional layouts, необходимо реализовать следующие четыре класса:

NSCollectionLayoutSize: Размеры ширины и высоты относятся к типу NSCollectionLayoutDimension, которые могут быть определены путем установки доли ширины/высоты макета (в процентах по отношению к его контейнеру) или путем установки абсолютных или расчетных размеров.

NSCollectionLayoutItem: Это ячейка нашего макета, которая отображается на экране в зависимости от размера.

NSCollectionLayoutGroup: содержит NSCollectionLayoutItem в горизонтальной, вертикальной или пользовательской формах.

NSCollectionLayoutSection: используется для инициализации секции путем передачи NSCollectionLayoutGroup. Секции в конечном итоге составляют СompositionalLayout.

Читать далее

Regular expressions in Swift

Время на прочтение11 мин
Количество просмотров7.4K

Регулярные выражения в Swift

Регулярные выражения позволяют нам выполнять сложные операции поиска и замены в тысячах текстовых файлов всего за несколько секунд, поэтому неудивительно, что они популярны уже более 50 лет. Apple обеспечивает поддержку регулярных выражений на всех своих платформах – iOS, macOS, tvOS и даже watchOS – все они используют один и тот же класс, NSRegularExpression. Это чрезвычайно быстрый и эффективный способ поиска и замены сложного текста десятки тысяч раз, и все это доступно для использования разработчиками Swift.

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

Начнем с основ.

Давайте начнем с пары простых примеров для тех, кто раньше не использовал регулярные выражения. Регулярные выражения – сокращенно regexes – предназначены для того, чтобы мы могли выполнять нечеткий поиск внутри строк. Например, мы знаем, что "cat".contains("at") является истиной, но что, если мы захотим сопоставить любое трехбуквенное слово, оканчивающееся на "at"?

Это как раз то, для чего предназначены регулярные выражения.

Сначала определим строку, которую мы хотим проверить.

Регулярные выражения в Swift

Layout библиотека для iOS проектов

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

Несмотря на то, что UIKit постепенно уступает место более современному во всех отношениях SwiftUI, до сих пор остается огромное количество проектов, которые основаны на фреймворке UIKit. Далее будет представлена библиотека, которая позволяет выполнять конструирование внешнего вида намного быстрее и удобнее, чем стандартные средства.

Читать далее

Swift Concurrency Instrument: чем он полезен iOS-разработчику

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров4.5K

Swift Concurrency Instrument помогает наглядно увидеть, что происходит в приложении с асинхронным кодом. Пошагово рассказываем, как устроен этот инструмент, и на примерах показываем, чем он может быть полезен.

Читать далее

Использование TabularData для Dump Data Model

Время на прочтение6 мин
Количество просмотров577

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

Например, фреймворк может быть использован для:

Читать далее