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

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

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

  • iOS Dev

    Применение default для подсчёта количества символов в строке Задача подсчёта символов в строках является одним из потенциальных вопросов во многих алгоритмических секциях. Вы можете легко установить значение по умолчанию для ключа в словаре. Для этого как раз можно воспользоваться ключевым словом default. 🛠 На скриншоте я показал два способа для подсчёта повторений букв в строке «Hello iOS Devs». 💼 Конечно, вариантов подсчёта может быть намного больше, но всегда полезно расширить свой инструментарий.
  • iOS Dev

    На StackOverflow выпустили большой, вернее, ОГРОМНЫЙ отчёт по результатам опроса более 70 000 разработчиков. Собрал в один пост выжимку по фактам для Swift и Objective-C, больше графиков и сравнений можно посмотреть здесь. Для Swift ❤️ 63% любят этот язык,😱 37% считают его неприятным. 💵 Медианная зарплата составляет $ 78 468 в год. Для Objective-C ❤️ 24% любят, 😱 76% считают его неприятным. 💵 Медианная зарплата $ 83 165 в год. Может на нём не так приятно писать, но пять тысяч долларов это пять тысяч долларов. Удовлетворённость средой разработки Xcode равная, 50% считают его годным инструментом, а 50% не очень. Лидеры по зарплатам Closure и Erlang — разработчикам, пишущим на одном из этих языков, платят в среднем $ 100 000 в год.
  • iOS Dev

    Стратегии обращения к пользователям с просьбой оценить ваше приложение 👏 📺 Многие пользователи смотрят, сколько звезд у приложения, прежде чем принять решение о его загрузке. 📖 В этой статье рассказывается про один из подходов. Что НЕ следует делать 🔴 Показывать алерт при запуске. 🔴 Показывать его слишком рано. 🔴 Показывать при любом общем для всех действии. Стратегии получения максимальной отдачи 🟢 Ориентироваться на уникальное действие в приложении. 🟢 Совмещать оценку с существующими. Например, если пользователь уже что-то положительно оценил в вашем приложении. 🟢 Внедрите систему, основанную на весе, для управления отображением ваших алертов. Например: — Открытие твита 1 балл. — Лайк твита 3 балла. — Создание твита 5 баллов. Если пользователь достигнет нужного порога — показываем запрос. 🙋Но вы должны использовать этот инструмент очень эффективно, потому что он очень ограничен, и если вы не будете осторожны, это может привести к печальному результату.
  • Реклама

  • iOS Dev

    Продвинутые анимации в SwiftUI 📖 В цикле статей авторы погружаются в некоторые продвинутые техники создания анимации SwiftUI. Подробно рассказывается о протоколе Animatable, его верном спутнике animatableData, мощном и часто игнорируемом GeometryEffect и протоколе AnimatableModifier. Все эти темы не слишком хорошо описаны в официальной документации и не очень часто упоминаются в постах и статьях о SwiftUI. Тем не менее, они предоставляют нам инструменты для создания довольно красивых анимаций. 1️⃣ Часть первая — Paths. 2️⃣ Часть вторая — GeometryEffect. 3️⃣ Часть третья — AnimatableModifier. 🛠 Все статьи насыщены примерами, а исходный код можно найти на гитхабе.
  • iOS Dev

    Equality в Swift: протокол Equatable, объяснение и примеры 🧐 Проверка того, считаются ли два объекта или значения равными, определенно является одной из наиболее часто выполняемых операций во всем программировании. 💻 Одним из наиболее интересных аспектов реализации равенства в Swift является то, что все это сделано протокольно-ориентированным способом — это означает, что любой тип может стать равнозначным, соответствуя протоколу Equatable. 📖 Например, в этой статье рассматривается, как Swift моделирует концепцию равенства и как эта модель различается между типами значений и ссылок.
  • iOS Dev

    10 фактов про разработку первых айфонов от Кена Косиенды — сотрудника Apple с 15-летним опытом и изобретателя автозамены в iPhone Разработка это не только написание кода, но и различные подходы к алгоритмам и решению тех или иных задач. Иногда я встречаю интересные факты или алгоритмы, но ещё более важно — истории программистов, особенно тех, кто стоял у истоков. Сегодня я собрал для вас подборку из фактов от программиста Apple, с работой которого каждый из нас сталкивается чаще, чем может показаться.
    10 фактов про разработку первых айфонов от Кена Косиенды — сотрудника Apple с 15-летним опытом и изобретателя автозамены в iPhone

    ⚪ Однобуквенные и двухбуквенные комбинации были просто хардкодом. Тяжело поверить, но это правда. При вводе «ik» всегда была автокоррекция на «ok». ⚪ Автокоррекция на оригинальном iPhone была очень простой. Она всегда соответствовала количеству набранных вами букв — автодополнения не было. Если вы введете 5 букв, в качестве исправлений будут предлагаться только слова из 5 букв… Кроме сокращений, код алгоритма также мог добавлять апостроф. ⚪ Как только вы набирали третью букву в слове, алгоритм просматривал…

    Telegraph
  • iOS Dev

    Быстрый способ проверить созданную URL-схему (диплинк) в симуляторе c помощью терминала ⏳ Есть старый способ с использованием Safari, но он не так эффективен. Safari не запоминает последнюю добавленную схему, поэтому вам придется вводить её снова и снова. А переход между браузером и приложением делает ситуацию хуже, ещё и тратит время. 👌 Расскажу о другом способе. Вы наверняка знаете, что есть xcrun, который можно использовать для запуска любого инструмента внутри Xcode из командной строки. Опцией для способа ниже является simctl, который и поможет вам управлять симуляторами. Для этого можно использовать: xcrun simctl openurl booted <url> 💻 В качестве параметра url нужно использовать вашу ранее созданную схему. В моём примере это: exampleapp://test. Специально для @iOS Dev.
  • iOS Dev

    Быстрый способ проверить, все ли элементы коллекции удовлетворяют заданному условию 👌 Со Swift 4.2 для этого можно использовать метод allSatisfy(). 🟢 Если все элементы удовлетворяют заданному условию, то вызов allSatisfy() вернет true. 🔴Если хотя бы один элемент не пройдет наше условие, то результатом вызова allSatisfy() будет false.
  • iOS Dev

    Как сбросить UserDefaults в Swift? 👌 Мы можем использовать UserDefaults в наших приложениях для хранения некоторых базовых конфигураций или настроек приложения. Вот только по мере усложнения проекта иногда нам может понадобится функция очистки всего конфига. 🤔 Мы можем использовать метод removeObject, чтобы удалить значение для определенного ключа (и сделать так для каждого). 🛠 Но что делать, если таких ключей у нас пара десятков? Тогда на помощь придёт системное API, в котором пригодится removePersistantDomainForName.
  • iOS Dev

    Паттерн «Навигатор»: изучаем и осваиваем NavigationStack в SwiftUI 👨‍💻 SwiftUI — это декларативный фреймворк, позволяющий нам создавать сложные пользовательские интерфейсы, определяя данные, отображаемые на экране. 🧭 Навигация была главной больной точкой фреймворка с самого первого дня. К счастью, после #WWDC22 ситуация изменилась, и SwiftUI теперь предоставляет новый API навигации на основе данных. 📖 В этом материале можно узнать, как использовать новый Navigation API для построения user flow — пути, которым могут воспользоваться пользователи внутри приложения.
  • iOS Dev

    WWDC: Вопросы и ответы из Digital Lounges В некоторых источниках уже фигурировали ответы по SwiftUI, собранные из каналов Slack по итогам общения разработчиков с работниками Apple. 📖 Пользователь твиттера по имени Emin пошёл дальше и создал ресурс со всеми темами из Digital Lounges. 👏 Из плюсов — хороший поиск и степень структурирования, а также потенциальное масштабирование. 🛠 Также вы можете внести и свой вклад в опенсорсный проект на гитхабе.
  • iOS Dev

    Улучшение работы с closures в Swift 5.7 ⏳ Раньше Swift действительно боролся с любыми замыканиями, которые не были тривиальными, но начиная с Swift 5.7 мы теперь можем писать код, как в первом примере. 😎 В новой версии было принято предложение SE-0326. Это сделало вывод типов менее неожиданным для разработчиков и устранило существующую ошибку в поведении. 👌 Речь здесь идёт о том, что добавление еще одного выражения или оператора в closure могло приводить к ошибке компиляции. Теперь такого не будет, и это хорошо.
  • iOS Dev

    Различные методы удаления последнего элемента из массива в Swift 1️⃣ dropLast() let fruits = ["Apple","Orange","Banana"] let nonRoundFruits = fruits.dropLast() print(nonRoundFruits) // ["Apple", "Orange"] Использование метода dropLast() удалит последний элемент и вернет оставшиеся. dropLast() является предпочтительным методом удаления массива, поскольку он безопасен, так как не изменяет исходный массив. 2️⃣ removeLast() var fruits = ["Apple","Orange","Banana"] let removedFruit = fruits.removeLast() print(fruits) // ["Apple", "Orange"] print(removedFruit) // Banana В отличие от метода dropLast(), метод removeLast() удаляет последний элемент из исходного массива и модифицирует его. 3️⃣ popLast() var fruits = ["Apple","Orange","Banana"] let removedFruit = fruits.popLast() print(fruits) // ["Apple", "Orange"] print(removedFruit) // Optional("Banana") 🧐 Метод popLast() похож на прошлый, но есть разница. Если в массиве нет элементов перед вызовом popLast(), краша не будет. Вместо этого вернётся nil.
  • iOS Dev

    Реализация собственного календаря с использованием UICalendarView на Swift в iOS 16 👏 Написал небольшую статью про то, как быстро можно внедрить новый UICalendarView в ваше приложение на Swift, в котором будет новая ось. 😉 Пример кода тоже есть, иначе зачем это всё.
    Реализация собственного календаря с использованием UICalendarView на Swift в iOS 16

    Настройка UICalendarView UICalendarView принадлежит к фреймворку UIKit и поставляется с простым инициализатором. let calendarView = UICalendarView() let gregorianCalendar = Calendar(identifier: .gregorian) calendarView.calendar = gregorianCalendar Примечание. Apple сообщает нам, что необходимо явно указать тип календаря при создании объекта UICalendarView. В нашем примере это будет григорианский календарь. Доступность API: UICalendarView доступен для iOS16.0+, iPadOS16.0+ и macCatalyst16.0+. Настройка UICalendarView

    Telegraph
  • iOS Dev

    Xcode 14 научили сохранять значение параметра при автокомплите вместо добавления нового 🎉 Одна из самых неприятных вещей в среде разработки была побеждена. Если раньше при автокомплите сохранялся старый код с уже заданным параметром и добавлялся новый слева, то теперь в Apple это оптимизировали и сэкономили всем нам немного нервов при разработке. Надеюсь, что инициаторы этой фичи в Xcode получили свою заслуженную премию 😉.
  • Реклама

  • iOS Dev

    Пример создания CircleLayout в SwiftUI ❗️Внимание! Эта возможность официально не документирована (или спрятана, как другие Private API) и пока непонятно, как будут относиться в Apple на ревью. Я не рекомендую использовать это в ваших проектах на данный момент. 😎 Оказывается, что кроме стандартных типов лэйаута есть CircleLayout, который может привести к такому необычному отображению. Если кто-то из вас, коллеги, делал приложения для WatchOS, то возможно вы проходили через некоторые сложности анимаций. Мне этот CircleLayout напомнил анимацию для часов, страшно даже сказать вслух, с #WWDC 2015. ⏳ Верю, что этот тип layout рано или поздно всё-таки анонсируют, так как, например, для часов мы уже видели улучшения.
  • iOS Dev

    Как использовать Live Text API в вашем приложении для iOS С iOS 16 функция Live Text стала доступна для разработчиков. Однако в Xcode 14 вы не найдете ни LiveTextKit, ни фреймворка с подобным названием. Всё дело в том, что новые API являются частью фреймворка VisionKit. ℹ️ И вообще, Live Text — это скорее маркетинговый термин. Классы, которые нужно использовать, это ImageAnalyzer и ImageAnalysisInteraction. Базовая настройка по на деле не очень сложная. Нам нужен UIImageView для отображения overlay и экземпляр UIImage с каким-нибудь изображением, содержащим либо текст, либо, например QR-код. 📖 В своей статье Filip Němeček приводит пример работы этих API. 📼 Перед этим можно посмотреть видео с #WWDC или почитать документацию.
  • iOS Dev

    WWDC: Навигация по блокам видео #WWDC подошла к концу, и пусть мы некоторые нововведения уже расмотрели, но их, конечно же, намного больше. Позволил себе вынести в отдельный блок приоритетные темы для изучения. 📼 Лучшее в Swift: последние обновления. 📼 Инструменты разработчика: все, что нужно для создания следующего топового приложения. 📼 System Services. 📼 Карты. 📼 SwiftUI и Frameworks. 📼 Privacy и Security. Остальные видео, сгруппированые по блокам, доступны по следующим ссылкам: 📼 Доступность и инклюзивность. 📼 Изменения в App Services: App Intents, SharePlay, WidgetKit, Focus, и другие. 📼 Лучшее из App Store Distribution и Marketing. 📼 Аудио и видео. 📼 Дополненная реальность. 📼 Бизнес и образование. 📼 Улучшения в дизайне: узнайте, как придумывать, повторять и создавать отличные интерфейсы. 📼 Графика и игры: повысьте уровень своих приложений и игр с помощью Metal 3. 📼 Здоровье и фитнес. 📼 ML и Vision. 📼 Фото и камера. 📼 Safari и Web. ❤️ Сделал для читателей @iOS Dev.