Обложка канала

iOS Dev. Страница 9

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

  • iOS Dev

    Невозможная отрисовка элементов в сетках на SwiftUI: код и примеры Пусть в канале я практически всегда рассказываю о приёмах в UIKit, но в редких случаях хочется показать и то, что можно делать на SwiftUI. 📖 В этой статье рассматриваются основы, а затем автор выходит за рамки обычных сеток с однородными строками и столбцами. Рассказывается, как получить информацию о лэйауте, а также создаётся специальный тип грида (как на гифке), в котором ячейка может охватывать область двух или более ячеек. Если вы уже знакомы с тем, как работают сетки, и хотите перейти к самым сложным темам, можно сразу перейти к разделу «Невозможное начинается». @iOS Dev
  • iOS Dev

    Пара слов про Ad hoc Если не все, то каждый второй разработчик использовал Ad hoc профили для распространения приложений. *Разработчики iOS, участвующие в стандартной программе, могут распространять приложение за пределами App Store на 100 различных устройствах в целях тестирования c помощью этих профилей. Но знаете ли вы, что именно означает Ad hoc? 📖 Ad hoc — латинская фраза, означающая «к этому», «специально для этого», «по особому случаю». Чаще всего её используют для способа решения специфической задачи. Например, закон ad hoc — закон, принятый в связи с каким-то конкретным инцидентом и не вписывающийся в обычную практику. Также ad hoc — это подразделение в организации, созданное для решения какой-то специальной, узкой задачи. Этот термин используется в политологии, науке, философии, даже в армии. А наши коллеги, занимающиеся администрированием, вполне могут использовать термин для обозначения беспроводных ad-hoc-сетей, не имеющих постоянной структуры, в которых клиентские устройства соединяются «на лету». @iOS Dev — неизвестное об известном, как говорится, по особому случаю✈️.
  • iOS Dev

    👩‍💻 Xсode, pbxproj, IBoutlet и IBAction Те, кто давно читают это канал, в курсе, что иногда я пишу о повседневных вещах, названия и предназначение которых не всегда очевидны. Привет камню из Хаблингбо в Швеции! Сегодня пятница, и поэтому позволю себе в двух предложениях рассказать, почему наша среда разработки называется Xcode, а не iCode или iBuilder (хотя последнее не так далеко от правды). 🕔 Xcode начинал свою жизнь как связка двух приложений: Project Builder и Interface Builder. Эти инструменты были написаны для NeXT Computer, Inc. Стива Джобса для их операционной системы NeXTSTEP. После покупки Apple NeXT, компания начала превращать NeXTSTEP в OS X, они также начали адаптировать Project Builder и Interface Builder к своей новой операционной системе. Первоначально эти два инструмента сохранили свои старые названия, но в OS X Panther (10.3) Apple заменила Project Builder переработанной версией под названием Xcode. В нескольких версиях Xcode продолжал поставляться вместе с Interface Builder, но связь между этими двумя инструментами всегда была сложной, поэтому в Xcode 4 (выпущенном между 10.6 и 10.7) они наконец объединили Interface Builder с Xcode. Точно так же, как происхождение OS X как NeXTSTEP выдается префиксами «NS» во многих API, так и происхождение Xcode как Interface Builder и Project Builder выдается аббревиатурами в приложении. «IB» в «IBOutlet» и «IBAction» является аббревиатурой для «Interface Builder», а основной файл информации о проекте в пакете xcodeproj имеет расширение «pbxproj» для «Project Builder X Project». ⌨️ Поэтому X означал написание приложений для OS X. А в будущем, что ж, кто знает, может и появится iCode (когда-нибудь). @iOS Dev
  • Реклама

  • iOS Dev

    Apple Wallet: поддерживаемые типы штрих-кодов и обходные пути К сожалению, Apple Wallet поддерживает только ограниченный набор типов штрих-кодов. Конечно, поддержка более современных 2D-штрих-кодов лучше, но ограничения Apple ведут к сложностям. 📖 В этом материале автор делится найденной информацией об Apple Wallet и о том, почему программы членства/лояльности могут не предлагать добавить цифровую карту в Apple Wallet. @iOS Dev
  • iOS Dev

    Как изменить стиль отступов простым способом? Для этого можно воспользоваться комбинацией Ctrl+Shift+«Клик мышкой» для создания мультикурсора. 😎 А затем если нужно, уже настраивайте отступы или же используйте Enter по вашему вкусу. #xcode #shortcuts @iOS Dev
  • iOS Dev

    Практический опыт работы с UICollectionView: создание приложения для просмотра фотографий с помощью Flickr API UICollectionView упрощает добавление кастомных лэйаутов и переходов между ними, такими, как в Photos. Вы не ограничены только стэком или гридом, поскольку UICollectionView настраиваемы. Вы можете использовать их для создания круговых макетов, макетов в стиле cover-flow, макетов в стиле новостей и почти всего, что только можно придумать! 📖 В этом материале вы получите практический опыт работы с UICollectionView, создав приложение для просмотра фотографий на основе сетки. Попутно вы узнаете, как: 😂 Добавлять свои хэдеры к UICollectionView. 😂 Легко перемещать ячейки путем их перетаскивания. 😂 Реализовывать выделение одной ячейки для показа вьюхи с деталями. 😂 Реализовывать выделение нескольких ячеек. @iOS Dev
  • iOS Dev

    Разбор различных политик кэширования при работе с URLRequest в Swift Когда дело доходит до связи с сервером в iOS, система предлагает различные стратегии кэширования для повышения производительности и снижения сетевого трафика. В зависимости от выбранной политики поведение может и правила управления контентом изменяются. 📖 В этой статье описано немного больше деталей, чем в доке эпла, и рассказывается, какую из политик лучше использовать в определённых условиях. @iOS Dev
  • iOS Dev

    Apple Security Bounty Program: поиск уязвимостей за вознаграждение ⌨️ Apple обновила раздел, посвященный поиску проблем в системе. Выплаты вознаграждения Apple Security Bounty производятся по собственному усмотрению Apple и зависят от типа проблемы, достигнутого уровня доступа или выполнения, а также качества отчета. Качественный отчет об исследовании имеет решающее значение для того, чтобы помочь нам быстро подтвердить и решить проблему, а также помочь вам получить вознаграждение Apple Security Bounty. 🔘 Например, сетевая атака может принести от $ 5 000 до $ 150 000. Пример: щелкнув ссылку в сообщении iOS Mail, вы можете загрузить удаленный контент, когда этот параметр отключен. 🔘 А в случае, если вы знаете способ, как обойти режим блокировки и определённых уровней защиты, вы сможете получить вплоть до $ 2 000 000. 📖 Подробнее о категориях написано здесь (любопытно узнать, чего Apple боится больше всего). @iOS Dev
  • iOS Dev

    Архитектура приложения и композиция объектов в Swift Композиция объектов — это основная концепция объектно-ориентированного программирования. Объекты могут содержать другие объекты, иногда создавая сложные иерархии. 📖 В этой статье автор рассказывает, как спроектировать такую ​​архитектуру. На реальном примере вы увидите, что работать со сложной иерархией просто, а объекты и иерархии можно использовать повторно. @iOS Dev
  • iOS Dev

    ⌨️ Как можно передавать данные между приложениями iOS? Полегче, посложнее и для хакермэнов. Недавно в одном чате увидел такой вопрос, и вспомнил, что раньше и у самого были некоторые похожие задачи. Попробовал структурировать способы, и покопался в разных источниках. Что вышло в итоге, вы можете увидеть в этом посте. Внимание, способы содержат как довольно очевидные решения, так и те, которые можно назвать безумными. 🔘 App Groups, пожалуй, самое очевидное из списка, и содержащее свой принцип в названии. 🔘 UIActivityViewController — возможно и не первое, что приходит на ум, но существующее решение. Поддерживается с iOS 6.0+ и реализуется с помощью application:openURL:sourceApplication:annotation:. 🔘 Custom URL Schemes. Чтобы включить схему URL-адресов в нашем приложении, мы должны добавить пользовательскую схему URL-адресов на вкладку информации. Откройте, например, Safari и введите [URL_scheme]://параметр, чтобы открыть ваше приложение. 🔘 Share Extension. iOS 8.0+. Это тип расширений, как, например Today, Action, Custom Keyboard и так далее. Позволяет хранить данные в общей группе, к которой могут получить доступ другие приложения, входящие в набор приложений. Все приложения, которые совместно используют доступ к связке ключей, должны использовать один и тот же префикс айдишника приложения. 🔘 Shared Keychain Access. iOS 3.0+. Связку ключей можно использовать в нескольких приложениях iOS, если они опубликованы одним и тем же разработчиком и при определенных условиях. 🔘 Custom Pasteboards. iOS 3.0+. Другой объект в том же или другом приложении считывает данные из pasteboard и представляет их пользователю в новом месте; обычно это происходит, когда пользователь запрашивает операцию вставки. В этом твиттер-треде разработчик делится своим опытом использования этого решения. 🔘 Darwin Notification Center (в этой статье есть и пример использования, и даже код). 🟡 iOS Photos! Что? Да! Посмотрите, как в этом репозитории нашли изысканное решение, хотя и может возникнуть два вопроса. @iOS Dev — шарим данные (и пост 😎).
  • iOS Dev

    Заполнение столбцов градиентом с использованием Swift Charts 🆕 С новыми Swift Charts очень легко создавать простые диаграммы для визуализации данных в наших приложениях. Фреймворк также предоставляет множество вариантов настройки, чтобы наши диаграммы по-настоящему выделялись. 📖 В этом посте описано, как построить диаграмму для визуализации среднесуточной температуры для каждого месяца года. Кроме этого, используется линейный градиент, чтобы подчеркнуть холодную и теплую температуру. Важным моментом является то, что градиент растягивается сверху вниз на всю область графика, а не заполняет каждый столбец по отдельности для достижения желаемого эффекта. @iOS Dev
  • iOS Dev

    Рефакторинг вашего кода на Swift: лучшие практики и советы для достижения успеха ℹ️ Рефакторинг кода — это часть пути к созданию надежных приложений. Неважно, опытный вы или нет: каждый разработчик рефакторит свой код, чтобы улучшить его качество или читабельность. Рефакторинг может быть достаточно маленьким, чтобы вы делали его неосознанно, в то время как большие рефакторы могут стать пугающими *. * в один своих таких рефакторов я переписывал раздел чата (кто работал с любыми чатами меня поймёт), полностью на Texture (он же AsyncDisplayKit), и если не юзать декомпозицию задач, можно было бы говорить «повезло, повезло». 📖 Автор этой статьи делится своими мыслями, которые позволяют контролировать результат рефактора и не дают возможности ухудшить код. В этом процессе он выделил несколько основных этапов: 🔘 Определение цели. 🔘 Создание уверенности в рефакторинге. Наши товарищи здесь это, по возможности, модульные тесты и конечно же, GIT. 🔘 Маленькие шаги к финальной цели. 🔘 Сведение масштаба к минимуму. Возможно, самый важный в психологическом плане пункт, и имеющий решающее значение на продолжительном отрезке. Не стоит пренебрегать помощью Xcode в рефакторинге. Конечно, вы не всегда можете предотвратить повторный рефакторинг, но вы можете вырасти как профессионал, постаравшись предотвратить свои прошлые ошибки. @iOS Dev
  • iOS Dev

    Знаете всё про iOS или только учитесь мобильной разработке на Swift? Рассказываем, как войти в IT за 3 месяца бесплатно, без регистрации и SMS, и найти работу мечты в финтехе. У Alfa Campus, образовательных курсов от Альфа-Банка, стартует новый набор: получите шанс попасть на факультеты тестирования, мобильной разработки для iOS и Аndroid, JavaScript, системной аналитики, low-code платформы Pega, микросервисной архитектуры, а также IT-рекрутмента. Подписка на Alfa Campus — это самый быстрый способ узнать о наборе и попасть на собеседование раньше других. А ещё тут вас ждёт атмосфера студенческого кампуса: разговоры об учёбе и преподах, интервью, новости и анонсы, розыгрыши мерча, шутки после пар. Полезная информация для будущих студентов уже ждёт вас в канале, вступайте 🙌
  • iOS Dev

    Протоколы ошибок, о которых вы могли не знать: Localized​Error, Recoverable​Error, Custom​NSError Несмотря на то, насколько мы все знакомы с Error, на удивление немногие из нас могут быть знакомы с другими протоколами ошибок, появившимися в SE-0112. Например, когда вы в последний раз сталкивались с LocalizedError в дикой природе? А что насчет RecoverableError? Вы можете сказать, что эти протоколы действительно малоизвестны, и есть большая вероятность, что вы о них не слышали: 🔘 LocalizedError. Специализированная ошибка, предоставляющая локализованные сообщения с описанием ошибки и причиной ее возникновения. 🔘 RecoverableError. Специальная ошибка, которую можно исправить, предоставив пользователю несколько возможных вариантов восстановления. 🔘 CustomNSError. Специализированная ошибка, предоставляющая домен, код ошибки и user-info dictionary. 📖 В этом объёмном материале автор разбирает на примерах, что и когда лучше использовать. @iOS Dev
  • iOS Dev

    Протоколы ошибок, о которых вы могли не знать: Localized​Error, Recoverable​Error, Custom​NSError Несмотря на то, насколько мы все знакомы с Error, на удивление немногие из нас могут быть знакомы с другими протоколами ошибок, появившимися в SE-0112. Например, когда вы в последний раз сталкивались с LocalizedError в дикой природе? А что насчет RecoverableError? Вы можете сказать, что эти протоколы действительно малоизвестны, и есть большая вероятность, что вы о них не слышали: 🔘 LocalizedError. Специализированная ошибка, предоставляющая локализованные сообщения с описанием ошибки и причиной ее возникновения. 🔘 RecoverableError. Специальная ошибка, которую можно исправить, предоставив пользователю несколько возможных вариантов восстановления. 🔘 CustomNSError. Специализированная ошибка, предоставляющая домен, код ошибки и user-info dictionary. 📖 В этом объёмном материале автор разбирает на примерах, что и когда лучше использовать. @iOS Dev
  • Реклама

  • iOS Dev

    UIStackView: Distribution и Alignment Несмотря на то, что UIStackView значительно упрощает лэйаут, он все равно может стать довольно сложным и несколько запутанным. Существует четыре основных свойства UIStackView: 1️⃣ axis 2️⃣ distribution 3️⃣ alignment 4️⃣ spacing Первый и последний относительно просты. Мы используем axis, чтобы определить ориентацию представления стека, которая может быть вертикальной или горизонтальной. Как насчет оставшихся двух: alignment и spacing? Хотя UIStackView стал настолько популярным и широко используется во многих приложениях, многие могут не понимать его полностью и использовать неправильно. 📖 И как раз о причинах сложностей и свойствах UIStackView рассказывается в этом материале. @iOS Dev
  • iOS Dev

    Простой доступ к данным симулятора 🔎 При разработке для iOS часто бывает полезно перейти к файлам, которые вы создаете в симуляторе. Местонахождение файлов на диске менялось годами, но одно оставалось неизменным — неудобно определять местонахождение файлов. Трудности с поиском файлов становятся еще более очевидными при работе в команде. ℹ️ В этом решении идея состоит в том, чтобы проверить таргет, а затем добавить символическую ссылку на ваш рабочий стол. Проверка переменных среды, доступных при работе в симуляторе, показывает, что есть вся необходимая информация, чтобы это произошло. 😎 Теперь, каждый раз при запуске симулятора, на рабочем столе вашего Mac будет создаваться новая символическая ссылка. @iOS Dev
  • iOS Dev

    OptionSet в Swift: определение, примеры и при чём тут побитовые операторы? Недавно я писал пост про «базу» и то, что на самом деле мы гораздо чаще, чем нам кажется, встречаемся с важными алгоритмическими понятиями. 📖 В этом материале рассказывается о том, что создать собственный OptionSet не так уж и сложно. Его можно использовать для большого количества логических значений. Хотя вы можете инициализировать его литералом массива, на самом деле он больше похож на Set, чем на массив. ℹ️ Фактически, OptionSet наследует все SetAlgebra, которые вы можете применять к сетам, что означает, что OptionSet имеет такие методы, как intersection, union, contains и несколько других методов, которые вы могли использовать в Set. В статье рассказывается об этой и остальных особенностях, приводится пример создания и рассматриваются возможности работы с OptionSet. @iOS Dev