Обновить
5.61

Swift *

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

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

Рефакторинг Swift

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели4.1K

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

Читать далее

Добавляем подсказки в приложение с помощью TipKit

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

Когда TipKit был впервые упомянут во время выступления на WWDC 2023, я поначалу предположил, что это какой-то новый способ отображения приложений в приложении Tips и, возможно, Spotlight. Вместо этого мы увидели встроенный компонент для добавления небольших обучающих представлений в наши собственные приложения на всех платформах с системой правил для отображения на основе условий и синхронизацией на нескольких устройствах через iCloud! Более того, Apple сама использует этот компонент в iOS 17, например, в приложениях Messages и Photos.

Читать далее

Листаем цифровые страницы: UIPageViewController

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

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

Сегодня я хочу поделиться кратким и простым руководством о том, как просто и программно реализовать UIPageViewController. Итак, что же мы получим в итоге?

Читать далее

Абстрактная фабрика: искусство создания масштабируемого кода

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели13K

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

Что вообще хотим увидеть:

Читать далее

Разбор задачи A отборочного этапа Yandex Cup 2023 — iOS

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели3.1K

Недавно закончился отборочный этап Yandex Cup для разработчиков по различным направлениям, одним из которых была мобильная разработка под iOS. Как раз про нее и поговорим, а точнее про задания, которые были там представлены. Стоит отметить, что их сложность выше среднего, по этой причине, думаю, каждый подчеркнет для себя что-нибудь новое. Хотелось бы сразу сказать о том, что некоторые используемые конструкции/инструменты языка/фреймворков были для меня не новы, но в жизни встречался с ними редко, поэтому приходилось читать и на практике воспроизводить код из условия, экспериментируя с ним. Правильных ответов у меня не было, и решал я уже после окончания отборочного этапа. Если заметите какие-либо неточности в формулировках, в размышлениях, в ответах, буду рад обсудить это в комментариях.

Приступим! :-)

Читать далее

Как использовать нативный платежный сервис SberPay в кроссплатформенном приложении на Flutter

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели11K

Всем привет! Это Мурат Насиров и Артем Баркалов, мы Flutter-разработчики в Friflex. Разрабатываем высоконагруженные мобильные приложения для бизнеса и специализируемся на Flutter. В этой статье мы собрали большую часть кейсов, с которыми вы можете столкнуться при интеграции кнопки оплаты SberPay в приложении на Flutter. Это поможет вам понять механику работы СберПэй и шаги, которые необходимо сделать для передачи событий из натива во Flutter.

Использование SberPay SDK в продакшене требует наличия установленного приложения «Сбербанк Онлайн» (СБОЛ), иначе в процессе оплаты произойдет ошибка. Тестирование можно проводить на симуляторе iOS и на реальном устройстве. На эмуляторе Android тестирование не выйдет — при попытке оплаты возникает ошибка. Разработчики SDK используют аппаратные возможности смартфонов: геолокацию, bluetooth, Wi-Fi для снижения вероятности совершения мошеннических операций (условный антифрод).

Первым делом разработчик узнает от Сбербанка (по договору о подключении SberPay SDK в приложение), логин/пароль (credentials) и ссылку, которые указываются в файле build.gradle проекта (приложения) в части Android для получения библиотеки. Либо отдельно запрашивается aar-бандл. Для подключения SDK на iOS выдадут отдельную ссылку на репозиторий, хотя он публичный

Вместе с данными для получения SDK выдают тестовые данные для регистрации заказа в шлюзе Сбера, а также специальные apiKey и merchantLogin, которые используются для инициализации SberPay SDK в вашем приложении. Тестовые данные не подходят для проверки списания реальных денежных средств с реальной карты, они исключительно для тестирования.

Читать далее

Keyboard Layout Guide

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

При разработке приложений для iOS мы часто сталкиваемся с проблемами, когда клавиатура iPhone выдвигается вверх и закрывает UITextField / UITextView

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

Управление клавиатурой - это базовый функционал, но Apple вынуждает нас управлять им вручную.

До iOS 15 было несколько способов решить проблему когда клавиатура перекрывает UITextField / UITextView или другие элементы.

Можно было вынести в свойство или аутлет нижний констрейнт перекрываемого элемента. Подписаться на уведомления.

Читать далее

SwiftUI: от сомнений к успешному внедрению

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

Всем привет, меня зовут Фарид Хусаинов, я тим-лид команды мобильной разработки Банки.ру. Мы делаем iOS-приложения компании Банки.ру, а именно – наше основное приложение и приложение, посвященное страхованию.

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

Читать далее

Готов ли Swift OpenAPI Generator для продуктивного кода?

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

Привет! Меня зовут Андрей, я iOS-разработчик приложения «Пункт Ozon». С помощью него сотрудники пунктов выдачи Ozon выдают посылки, принимают возвраты, проводят инвентаризации. 

Мы хотим упростить работу с OpenAPI-спецификациями, внедрив кодогенерацию для автоматического создания кода на Swift из YAML- или JSON-файла спецификации. Это позволяет автоматизировать создание DTO, сделать их единообразными и повысить эффективность разработки. Кодогенератор также упрощает сетевой слой, генерируя методы API, наборы параметров, заголовки и т.д.

На WWDC `23 Apple представила свой Open Source-генератор Swift OpenAPI Generator, который как раз и решает эту задачу. Давайте рассмотрим, готов ли в текущем виде Swift OpenAPI Generator для решения нашей проблемы.

Читать далее

Архитектура SwiftUI + VIPER: модульный подход к разработке iOS‑приложений

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

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

И ни капельки UIKit и другой темной магии..

Читать далее

Скорее жив, чем мёртв: тенденция по развитию iOS технологий

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели8.5K

Подготовьте кружечку чая, запаситесь терпением и дочитайте всю статью до конца.

После 24 февраля 2022 года, события в iOS разработке начали меняться не в лучшую сторону. Приложения "крупных" компаний удаляются из App Store (пример Сбербанк, Альфа банк, ВТБ, Тинькофф). Кажется, что iOS разработчики становятся в России не актуальными, а количество Flutter разработчиков увеличивается. Так что же нас ждет? Неужели придется учить Kotlin, или вообще уходить в C++?

Читать далее

Книги по Swift и iOS-разработке для начинающих специалистов и профессионалов

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

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

Читать далее

Что мобильным разработчикам расскажут на Mobius 2023 Autumn: от Compose и SwiftUI до компьютерного зрения

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

Близится очередная конференция Mobius, и пришло время представить Хабру её программу.

Суть прежняя: тут есть доклады и по iOS-разработке, и по Android, и по кроссплатформенным технологиям вроде Flutter. И про свежие тренды (вплоть до шлема Apple Vision Pro), и про более фундаментальные вопросы вроде архитектурных.

А что конкретно будет? Собрали под катом описания всех докладов, разделив их на тематические блоки.

Программа Mobius 2023 Autumn

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

WidgetKit в iOS — не просто большие иконки

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели4.2K

Меня зовут Даша, я iOS-разработчик в Surf. Сегодня я освежу в вашей памяти философию и design виджетов. Подсвечу технические аспекты, которые помогут, если вы собираетесь делать свой первый виджет или хотите вдохнуть жизнь в старый. А ещё затрону несколько неочевидных, но важных тем.

Читать далее

Вы не так готовите Kingfisher, или как самураи работают с загрузкой изображений

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

Вы не так готовите Kingfisher, или как самураи работают с загрузкой изображений

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

Читать далее

Собери сам: Набор для разработки на SwiftUI

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели2.1K

Хотели когда-нибудь попробовать SwiftUI? А может быть вы как раз искали ресурсы для изучения? Может быть у вас есть Macbook и вам абсолютно нечем заняться на ближайших выходных? Если вы кто-то или что-то из вышеперечисленного, то эта статья для вас.

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

Пора в бой!

Универсальные датасорсы в iOS-разработке

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

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

Универсальные датасорсы предоставляют разработчикам API для доступа к данным в коллекциях без привязки к конкретному источнику и типу данных. Они обеспечивают абстракцию, которая дает разработчикам возможность работать с данными в коллекциях независимо от их происхождения или формата хранения. Это позволяет легко изменять источник данных, добавлять новые функции и поддерживать разные типы данных в приложении.

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

Читать далее

CD-диск на шейдерах и NameDrop в iOS 17

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

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

Описать метериал через шейдер сложно, а создать динамичный эффект — ещё сложнее. В этой статье разберём пару примеров: переливающийся диск и нашумевший NameDrop в iOS 17.

Читать далее

Руководство по Использованию Многопоточности в Swift

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

Многопоточность в Swift играет критически важную роль в создании отзывчивых и эффективных приложений. В этой статье мы рассмотрим, когда и как использовать новые возможности многопоточности в Swift, включая async/await, Task и структурированную многопоточность.

Читать далее

UI Testing in Swift with XCTest framework

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

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

Читать далее