Как стать автором
Обновить
0.75

Xcode *

Интегрированная среда разработки ПО

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

Cocoapods pod install без интернета на CI при использовании Tuist

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

Для успешного выполнения команды pod install менеджера зависимости Cocoapods нужен доступ в интернет, но на раннерах в целях безопасности для continuous integration может отсутствовать сеть. В некоторых случаях, например, при использовании инструмента Tuist в проекте, исполнение pod install на CI необходимо для интеграции Подов в проекты. В этой статье рассмотрим, как можно легко с помощью нескольких команд возобновить успешное выполнение команды pod install на раннерах без выхода в интернет.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 2

Новости

Упрощаем локализацию iOS-приложения со String Catalogs

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

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

Сегодня я расскажу о том, как можно в значительной мере облегчить и усовершенствовать процесс перевода iOS-приложения на другие языки. Языки, разумеется, человеческие: от Swift мы отказываться не будем.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 3

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

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

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

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

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Комментарии 1

Дебаггинг приложения без Xcode. Зачем?

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

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

Привет, меня зовут Владимир Петров, я iOS разработчик в Альфа-Банке. Я вам расскажу как мы сделали свой дебаг-инструмент и научились дебажить наше приложение без Xcode. Обратите внимание на статью, если думали над тем, чтобы делать свое решение или готовое — расскажу, какая там может быть функциональность.

Читать далее
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 10

Истории

Интерактивный UX: Как использовать Drag and Drop в UICollectionView на iOS

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

Когда речь идет о создании современных и привлекательных пользовательских интерфейсов, функциональность Drag and Drop (перетаскивание и сброс) играет ключевую роль. Эта техника позволяет пользователям более естественным образом взаимодействовать с контентом и упрощает перемещение элементов внутри приложения.

В данной статье мы погрузимся в мир Drag and Drop в контексте UICollectionView, одного из наиболее мощных и гибких компонентов пользовательского интерфейса в iOS. Попробуем легко и эффективно внедрить эту функциональность в проекты, создавая интерактивные и удобные интерфейсы для пользователей.

Собственно это то, что у нас получится:

Смотрим дальше
Рейтинг 0
Комментарии 1

UICollectionView внутри UICollectionView программно

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

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

Ну что, приступим, для начала разберемся с основной коллекцей во ViewController

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 8

Sticky Header в SwiftUI

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

Cоздаем липкие заголовки на SwiftUI (Без introspect и GeometryReader)!
Попутно понимая как SwiftUI взаимодействует с UIKit.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 0

Революционные IDE, повлиявшие на разработку ПО

Уровень сложности Простой
Время на прочтение 12 мин
Количество просмотров 31K
В старину при написании кода вы видели лишь чёрный текст на белом фоне. Для того чтобы писать код, требовалось много внимания и аккуратности. Опечатки не подсвечивались автоматически, а синтаксические ошибки обнаруживались только в процессе компиляции. По сравнению с современным программированием это был совершенно иной процесс.

Asymetrix ToolBook, когда-то популярный благодаря мультимедийным возможностям, но уже давно позабытый

В этой статье мы рассмотрим десяток сред разработки, оказавших самое большое влияние за последние тридцать лет программирования. IDE ранжированы по порядку, от десятого места до первого.
Читать дальше →
Всего голосов 98: ↑90 и ↓8 +82
Комментарии 181

Логи Xcode — читаем самостоятельно?

Уровень сложности Сложный
Время на прочтение 10 мин
Количество просмотров 3.2K

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

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 0

Что нового в SwiftUI для iOS 17?

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

SwiftUI продолжает быстро развиваться, и в этом году мы видим огромное количество улучшений в прокрутке, интересные новые эффекты SF Symbols, продвинутую поддержку шейдеров Metal и многое другое.

Некоторые обновления в этом релизе из числа тех, которые автор предлагал лично. Среди них - добавление шейдеров Metal, улучшение работы Color с Codable, добавление замыкания по завершении для анимаций, которое дает нам возможность анимировать градиенты. Теперь мы ещё можем скруглять углы прямоугольника по своему усмотрению. Только благодаря первой бета-версии автор закрыл как минимум дюжину своих предложений!

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 0

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

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

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

Читать далее
Всего голосов 4: ↑1 и ↓3 -2
Комментарии 2

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

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

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

Читать далее
Всего голосов 5: ↑2 и ↓3 -1
Комментарии 0

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

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

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

Читать далее
Всего голосов 3: ↑1 и ↓2 -1
Комментарии 0

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

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

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

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

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

Читать далее
Всего голосов 1: ↑0 и ↓1 -1
Комментарии 0

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

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

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

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

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

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 0

Многомодульное iOS-приложение: подходы к организации межмодульного взаимодействия

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

Привет, Хабр. Меня зовут Кирилл Смирнов. Я технический лидер iOS команды в СберЗдоровье. Последний год наша команда активно занимается улучшением инструментов разработки, в том числе модуляризацией, и уже успела получить опыт, который может быть полезен другим. В предыдущем материале я рассказывал, как компании подготовиться к модуляризации iOS приложений, а в этом остановлюсь на вопросах оптимизации сборки проекта и выборе вариантов линковки артефактов компиляции.

Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 7

Ошибка квадратных скобок в хедерах UnityFramework в Xcode

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

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

Бегу судорожно откатывать последние изменения в проекте Unity.... Тщетно.
Переключаюсь с текущей ветки на ветку main, собираю сборку, понимаю что битва только начинается.

Читать далее
Всего голосов 8: ↑1 и ↓7 -6
Комментарии 5

Интеграция Yandex MapKit в SwiftUI проект. Часть 1

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

Всех приветствую.

Совсем недавно поступила задача заменить стандартные карты от Apple на Яндекс карты. Ниже немного о Yandex MapKit.

Yandex MapKit — это кроссплатформенная библиотека, которая позволяет использовать возможности Яндекс.Карт в мобильных приложениях для iOS и Android.

Основная проблема заключалась в том, что библиотека Yandex MapKit создана для UIKit, но наша цель поставить все это дело на SwiftUI. Поэтому прибегаем к старой доброй пикче.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 1

Test Plans — теперь по умолчанию для новых проектов с Xcode 14.3

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

Начиная с Xcode 11, когда Apple представила Xcode Test Plans для более простого и более настраиваемого управления тестированием и его выполнения, — и новые, и уже существующие проекты приходилось вручную переводить на использование новой системы или создавать новые планы тестирования с нуля. Для тех, кто не знаком: планы тестирования позволяют одному файлу управлять одной или несколькими тестовыми конфигурациями для набора тестов; допускают использование нескольких языков, смоделированных локаций, настроек тестирования и многое другое в одном тестовом запуске. Они могут сэкономить массу времени главным образом для локализованных приложений, приложений с белой меткой или сценариев со сложными конфигурациями сборки.

Переход на планы тестирования не требует больших усилий, вам нужно открыть существующую схему и перейти в раздел Test, а затем нажать кнопку Convert to use Test Plans

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 0

Как не потерять голову (и память) при поиске утечек в iOS

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

Всем привет! Меня зовут Фируза, я занимаюсь iOS-разработкой в компании SimbirSoft. Хочу поделиться результатами исследования утечек памяти, с которыми я столкнулась на одном из проектов.

Все началось с того, что я заметила подтормаживания UI и обратила внимание на рост занимаемой памяти в процессе использования приложения. В пределах нескольких сценариев расход памяти незначительно колебался – объекты создавались и освобождались. Другие сценарии при непродолжительном использовании приводили к значительному росту памяти, используемой приложением. При активном и продолжительном использовании могут «убежать» сотни мегабайт.

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

Статья будет интересна для iOS-разработчиков любого уровня. Изучив материал, вы сможете увеличить производительность вашего приложения, а также разобраться в том, как работают инструменты Xcode.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 3

Вклад авторов

Работа

iOS разработчик
23 вакансии
Swift разработчик
39 вакансий