Обновить
5.86

Swift *

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

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

Flutter, создание Home Widget на платформе iOS

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

Всем привет! Меня зовут Константин, я Flutter-разработчик в компании Nord Clan.

В данной статье мы с моей коллегой Анной хотели бы поделиться нашим опытом связки Flutter и home widget на платформе iOS.

Читать далее

Bottom sheet: Scrolling and interactions

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

Отображать контент в виде bottom sheet — задача со звёздочкой сама по себе, но когда контента становится больше, чем помещается на контроллере, всё становится ещё любопытней. В третьей и заключительной статье про bottom sheet мы:

1) Добавим возможность закрывать контроллеры, презентованные как bottom sheet с помощью свайпа по контенту.

2) Реализуем отображение контента, который не имеет собственных значений высоты для autoLayout (контент с прокруткой).

Читать далее

Как Параллелизм в Swift предотвращает взрывы потоков?

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

Как Параллелизм в Swift предотвращает взрывы потоков?

Несколько недель назад я прочитал статью Войцеха Кулика, в которой он рассказывает о некоторых подводных камнях во фреймворке Swift Concurrency. В одном из разделов Войцех кратко упомянул взрыв потока и то, как Swift Concurrency может предотвратить его, ограничивая нас от чрезмерной загрузки системы бОльшим количеством потоков, чем ядер ЦП.

Это заставило меня задуматься… Так ли это на самом деле? Как это работает за кулисами? Можем ли мы как-то обмануть систему, чтобы она создавала больше потоков, чем ядер ЦП?

На все эти вопросы мы собираемся ответить в этой статье. Итак, без лишних слов, давайте сразу приступим.

Читать далее

Малоизвестные возможности расширения VS Code Swift

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

Большую часть этого года я работал над расширением Swift для Visual Studio Code.

Работа является частью Swift Server Workgroup, направленной на улучшение опыта разработки на Swift за пределами экосистемы Apple.

Читать далее

Скрывайте Виджеты Экрана Блокировки когда устройство заблокировано

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

Скрывайте Виджеты Экрана Блокировки когда устройство заблокировано.

Недавно на работе нас попросили скрыть(*спрятать) содержимое виджетов экрана блокировки, когда устройство заблокировано, подобно виджету Activity Rings, который не показывает ваш ежедневный прогресс, когда вы блокируете устройство. Оказалось, что не так уж очевидно, как этого добиться. В этом небольшом посте я хочу рассказать о том, что необходимо для достижения такого же поведения, как у виджета Activity Rings.

Читать далее

Делегаты в Swift на простом примере

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

Эта статья для уровня trainee, а значит для совсем начинающих великолепных разработчиков.

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

Основная цель статьи - рассказать просто, на примере, как можно использовать паттерн делегирования в Swift.

Читать далее

Советы по отладке при работе над проектами Swift

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

Вот несколько моих любимых трюков и советов по отладке, которые я использую при работе над проектами Swift.

Читать далее

Зональная Диаграмма со слоем затемнения вплоть до текущего момента времени

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

Зональная Диаграмма со слоем затемнения вплоть до текущего момента времени

Читать далее

Улучшенные API навигации SwiftUI

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

Сегодня мы выпускаем самое большое обновление для нашей библиотеки SwiftUINavigation с момента её первого выпуска год назад. В нём обеспечена поддержка новых API-интерфейсов iOS 16, исправлены ошибки некоторых навигационных инструментов Apple, улучшена поддержка оповещений и диалоговых окон подтверждения, а также улучшена документация.

Присоединяйтесь к нам для быстрого обзора новых функций и обязательно обновитесь до версии 0.4.0, чтобы получить доступ ко всему этому и многому другому:

Читать далее

Разработка приложений с помощью Симулятора Аксессуаров HomeKit

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

Узнайте, как использовать HomeKit Accessory Simulator (HAS) (Симулятор аксессуаров для HomeKit) от Apple, для имитации смарт-аксессуаров для дома при разработке приложений с поддержкой HomeKit.

Читать далее

Обзор новых API навигации в SwiftUI

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

SwiftUI имеет совершенно новые API-интерфейсы навигации в iOS 16 и macOS 13. Они позволяют нам определять навигацию на основе стека и навигацию по нескольким столбцам.

Читать далее

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

Управление загрузками в Xcode

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

Начиная с Xcode 14, симуляторы для watchOS и tvOS доступны в виде отдельных загрузок (iOS и macOS по-прежнему «встроены»). Данное решение позволяет значительно уменьшать размер загрузки приложения, однако теперь вам придется самостоятельно управлять этими большими (3-4 ГБ) компонентами.

При первом запуске Xcode 14 вам будет предложено загрузить дополнительные платформы. Также подсказка появится, когда вы попытаетесь запустить код без среды выполнения.

Но что это за загрузки и где они хранятся? Первый совет — откройте дисковую утилиту (Disk Utility). Вы увидите кучу новых томов «Симулятор», смонтированных в разделе «Образы дисков» (Disk Images):

Читать далее

Android vs iOS: кто быстрее покорит Эверест?

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

Привет всем мобильным разработчикам! Мы одинаково любим Android и iOS. Но у каждого свои предпочтения. Предлагаем определить фаворита в дружеском поединке. Для этого перенесёмся в Гималаи и покорим Эверест. Выберите команду и постарайтесь дать как можно больше правильных ответов, чтобы добраться до вершины первыми. На весь тест 10 минут.

Взобраться на Эверест

Bottom sheet: Navigation

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

Это вторая статья из цикла про bottom sheet, в которой мы воссоздаём поведение платёжного фрагмента в Кошельке по образу и подобию Apple Pay и сталкиваемся с тем, что это не так то просто.

Из материала вы узнаете, как повторить полноценную навигацию в рамках bottom sheet отображения, основанного на autolayout, а не на неудобном ручном расчёте высоты. А ещё мы вместе повторим анимации навигационных переходов и добавим navigation bar как нативный способ управления навигацией.

Читать далее

Создание пользовательского (индивидуального) макета в SwiftUI. Основы

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

В настоящее время SwiftUI предоставляет протокол Layout, позволяющий нам создавать суперпользовательские (сверхиндивидуальные мне кажется здесь больше подходит) макеты, копаясь в системе компоновки без использования GeometryReader. Протокол Layout дает нам невероятную силу создания и повторного использования любого макета, который вы можете себе представить. На этой неделе мы узнаем, как использовать новый протокол Layout для создания макета потока в SwiftUI.

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

Читать далее

Чем порадует и удивит Swift в 2023 году?

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

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

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

Читать далее

Big O нотация в Swift (часть 2 — Сокращение)

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

 Привет всем, добро пожаловать в раздел о сокращении Big O. В первой части мы познакомились с BigO нотацией, а сегодня вы узнаете, как взять большой сложный алгоритм и свести его до минимального значения Big O. После прочтения данной статьи вы сможете взглянуть на любой алгоритм и определить, что представляют собой различные компоненты в рантайме. Итак, давайте выясним, как на самом деле анализировать и определять Big O любого алгоритма.

Читать далее

Core Data в современном интерьере SwftUI. Взаимосвязь объектов. Динамический @FetchRequest. часть 2

Время на прочтение18 мин
Охват и читатели3.2K
В первой части этой статьи мы рассмотрели основы работы с Core Data в SwiftUI на примере шаблонного приложения, предложенное Apple. Это было тривиальное приложение, в котором всего лишь один объект Core Data с одним единственным атрибутом, и тем не менее было показано, что давая объектам Core Data дополнительную функциональность с помощью „синтаксического сахара“ в расширении extension их классов class, автоматически генерируемых Xcode, можно добиться комфортной работы с Core Data в SwiftUI. Эти классы являются миниатюрными ViewModels для наших SwiftUI Views, так как они реализуют протоколы ObservableObject и Identifiable. И Apple научила их прекрасно «играть» на поле реактивности SwiftUI.

Во второй части статьи я хочу показать, что роль автоматически генерируемых Xcode классов class для объектов Core Data существенно возрастает при работе с реальными взаимосвязанными объектами — рейсами Flights, аэропортами Airports и авиакомпаниями AirLines, которые мы получаем в интернете на сайте компании FlightAware и размещаем в локальной базе данных Core Data.

Создаваемое в этой части статьи приложение с именем CoreDataSwiftUIFlights является сильно упрощенной модификацией реального приложения Enroute из стэнфордских курсов CS193P 2020, которое оперативно подкачивает данные с сервера FlightAware и требует от вас платной подписки на сервис FlightAware .

Однако, просто зарегистрировавшись на сайте компании FlightAware, вы можете бесплатно получить временной срез любой интересующей вас информации о рейсах Flights, аэропортах Airports и авиакомпаниях Airlines в JSON формате. Эти данные размещаются в Core Data с учетом взаимосвязей этих объектов, и вы можете не просто видеть всю информацию о рейсах, но и делать различные запросы к ней с помощью фильтров и сортировать ее нужным вам способом.



Код находится на Github.
Читать дальше →