Xcode 14 beta practically confirms iPhone 14 Pro will get an AOD
Последняя бета-версия Xcode 14 подтверждает, что always-on display (AOD) будет в iPhone 14 Pro.
Технология требует низкой частоты обновления для экономии заряда батареи. Ожидается, что iPhone 14 Pro будут оснащены OLED дисплеем, который сможет менять частоту обновления от 120 Гц до 1 Гц.
Также с iOS 16 Apple может представить сторонние виджеты экрана блокировки под названием "Live Activities". Например, для просмотра счета спортивного матча или времени прибытия такси.
Preview SwiftUI в последней бета-версии Xcode 14 имеет новое поведение, которое позволяет разработчику увидеть, как будут выглядеть виджет, когда экран находится в режиме AOD.
#iOS16 #iPhone #неточно
Последняя бета-версия Xcode 14 подтверждает, что always-on display (AOD) будет в iPhone 14 Pro.
Технология требует низкой частоты обновления для экономии заряда батареи. Ожидается, что iPhone 14 Pro будут оснащены OLED дисплеем, который сможет менять частоту обновления от 120 Гц до 1 Гц.
Также с iOS 16 Apple может представить сторонние виджеты экрана блокировки под названием "Live Activities". Например, для просмотра счета спортивного матча или времени прибытия такси.
Preview SwiftUI в последней бета-версии Xcode 14 имеет новое поведение, которое позволяет разработчику увидеть, как будут выглядеть виджет, когда экран находится в режиме AOD.
#iOS16 #iPhone #неточно
👍9👎2
Как сохранить Enum в UserDefaults
В серии статей проблему делят на два случая и предлагают следующие решения:
1. Для перечислений с raw value все понятно и просто. Нужно лишь сохранять enum в UserDefaults по этому raw value.
2. Для перечислений с associated value нужно сделать так, чтобы перечисление соответствовало протоколу Codable, а затем делать encode/decode перед записью/чтением в UserDefaults. Сделать это можно через Data или Dictionary.
#swift
В серии статей проблему делят на два случая и предлагают следующие решения:
1. Для перечислений с raw value все понятно и просто. Нужно лишь сохранять enum в UserDefaults по этому raw value.
2. Для перечислений с associated value нужно сделать так, чтобы перечисление соответствовало протоколу Codable, а затем делать encode/decode перед записью/чтением в UserDefaults. Сделать это можно через Data или Dictionary.
#swift
👍7👎3
🛠️ Что нового в Xcode 14? Некоторые моменты:
👉 Улучшения в редакторе кода. Например, много новых автокомплитов
👉 Автоматическое добавление import'ов заменено на ошибку Xcode с кнопкой Fix It
👉 Xcode может автоматически создать вариации на иконки приложения по размерам
👉 Интерактивные SwiftUI превью
👉 Фокус на скорости: линковка до 2 раз быстрее, сборка на 25%, тесты на 30%. Build Timeline для отображения распределения времени на сборку
👉 Более быстрое скачивание за счет отсутствия SDK для tvOS и watchOS
#Xcode #Updates
👉 Улучшения в редакторе кода. Например, много новых автокомплитов
👉 Автоматическое добавление import'ов заменено на ошибку Xcode с кнопкой Fix It
👉 Xcode может автоматически создать вариации на иконки приложения по размерам
👉 Интерактивные SwiftUI превью
👉 Фокус на скорости: линковка до 2 раз быстрее, сборка на 25%, тесты на 30%. Build Timeline для отображения распределения времени на сборку
👉 Более быстрое скачивание за счет отсутствия SDK для tvOS и watchOS
#Xcode #Updates
❤7👍4👎3
Custom Layout in SwiftUI
HStack, VStack и Grid в SwiftUI закрывают бОльшую часть потребностей разработки, но иногда бывает нужно создать кастомные Layout. В iOS 16 появилась такая возможность:
1. Создаем view, которая соответствует протоколу Layout
2. Реализуем два обязательных в протоколе метода:
-
-
#iOS16 #swiftUI
HStack, VStack и Grid в SwiftUI закрывают бОльшую часть потребностей разработки, но иногда бывает нужно создать кастомные Layout. В iOS 16 появилась такая возможность:
1. Создаем view, которая соответствует протоколу Layout
2. Реализуем два обязательных в протоколе метода:
-
sizeThatFits(proposal:subviews:cache:)
, который возвращает размер созданной view-
placeSubviews(in:proposal:subviews:cache:)
, в котором мы определяем расположение элементов внутри контейнера#iOS16 #swiftUI
👍6👎2
Что будет с iOS-разработкой в России
Яндекс Практикум взял интервью на волнующую тему, чтобы получить ответы на вопросы:
👉 Как развивалась Apple предыдущие пару лет?
👉 Что изменилось после блокировок со стороны Apple?
👉 Повлияет ли на iOS-разработку запрет отгрузки техники Apple?
👉 Какое будущее у iOS-разработки?
Ответ на последний вопрос получился неоднозначным. С одной стороны в России до сих пор остается большое количество iPhone, но большого роста ожидать не приходится и риски дальнейших санкций сохраняются.
Надеемся на лучшее, но имеем запасные аэродромы 🛫
Что вы думаете на этот счет? Давайте обсуждать в комментариях
#iOS
Яндекс Практикум взял интервью на волнующую тему, чтобы получить ответы на вопросы:
👉 Как развивалась Apple предыдущие пару лет?
👉 Что изменилось после блокировок со стороны Apple?
👉 Повлияет ли на iOS-разработку запрет отгрузки техники Apple?
👉 Какое будущее у iOS-разработки?
Ответ на последний вопрос получился неоднозначным. С одной стороны в России до сих пор остается большое количество iPhone, но большого роста ожидать не приходится и риски дальнейших санкций сохраняются.
Надеемся на лучшее, но имеем запасные аэродромы 🛫
Что вы думаете на этот счет? Давайте обсуждать в комментариях
#iOS
👍5👎3
Как уменьшить потребление памяти при использовании UIImage
Использование памяти связано с размерами изображения, а не с размером файла, в связи с чем при отображении HD картинок можно столкнуться с Out of memory exception.
Дело в том, что для отображения изображения на экране, iOS сначала необходимо декодировать и распаковать изображение. Обычно 1 пиксель декодированного изображения занимает 4 байта памяти — 1 байт для красного, 1 байт для зеленого, 1 байт для синего и 1 байт для альфа-канала.
Например, картинка в разрешении 3648 на 5472 будет весить примерно 80 MB 🤯
Автор статьи рассказывает как правильно реализовать отображение картинки и что такое downsampling
#optimization
Использование памяти связано с размерами изображения, а не с размером файла, в связи с чем при отображении HD картинок можно столкнуться с Out of memory exception.
Дело в том, что для отображения изображения на экране, iOS сначала необходимо декодировать и распаковать изображение. Обычно 1 пиксель декодированного изображения занимает 4 байта памяти — 1 байт для красного, 1 байт для зеленого, 1 байт для синего и 1 байт для альфа-канала.
Например, картинка в разрешении 3648 на 5472 будет весить примерно 80 MB 🤯
Автор статьи рассказывает как правильно реализовать отображение картинки и что такое downsampling
#optimization
🔥9👎1
Подтвердилась дата презентации Apple - 7 сентября в 20:00 МСК
Писали раннее ожидаемые в сентябре обновления по информации Bloomberg
А на следующей октябрьской презентации ждем AirPods Pro второго поколения, новый iPad 10-го поколения, обновленный iPad Pro, Apple Silicon Mac Pro
Слоган сентябрьской презентации - Far out, "Далеко".
Как вы думаете, на что он намекает?
#apple #iPhone
Писали раннее ожидаемые в сентябре обновления по информации Bloomberg
А на следующей октябрьской презентации ждем AirPods Pro второго поколения, новый iPad 10-го поколения, обновленный iPad Pro, Apple Silicon Mac Pro
Слоган сентябрьской презентации - Far out, "Далеко".
Как вы думаете, на что он намекает?
#apple #iPhone
🎉3🔥1
За гранью App Store, или Что нового открывает MDM и Supervised для B2B в iOS
В статье рассказывается, что такое Configuration profiles, чем MDM может быть полезен для B2B-приложений, а также о supervised- и BYOD-режимах
Применение Server-based MDM:
👉 Поддержка Lost mode. Может быть полезно, если сотрудник организации потеряет устройство
👉 Контроль новых установленных приложений
👉 Отслеживание установленных рутовых сертификатов
👉 Отслеживание роуминга — взаимодействия с GSM-сетями
👉 Разные политики безопасности и доступа к устройству, например политики Face-ID или Touch-ID, если они доступны, а также определять парольные политики
👉 Раскатывать корпоративные приложения
👉 Управлять обновлениями ОС
Если вам интересно больше узнать о MDM, то совсем недавно вышло интервью с разработчиком такой системы и ее особенностях в Android
#security
В статье рассказывается, что такое Configuration profiles, чем MDM может быть полезен для B2B-приложений, а также о supervised- и BYOD-режимах
Применение Server-based MDM:
👉 Поддержка Lost mode. Может быть полезно, если сотрудник организации потеряет устройство
👉 Контроль новых установленных приложений
👉 Отслеживание установленных рутовых сертификатов
👉 Отслеживание роуминга — взаимодействия с GSM-сетями
👉 Разные политики безопасности и доступа к устройству, например политики Face-ID или Touch-ID, если они доступны, а также определять парольные политики
👉 Раскатывать корпоративные приложения
👉 Управлять обновлениями ОС
Если вам интересно больше узнать о MDM, то совсем недавно вышло интервью с разработчиком такой системы и ее особенностях в Android
#security
👍4👎1
Часто работает из отпуска четверть программистов, а иногда – каждый второй
Сервиса SuperJob провел опрос с целью узнать, часто ли россиянам приходится работать из отпуска. В опросе приняли участие 3000 граждан, имеющих постоянную работу и вот что выяснилось касательно программистов:
🌴 25% часто работают
🌴 47% иногда работают
🌴 8% ответили "нет, так как нет такой необходимости"
🌴 9% принципиально не работают во время отпуска
#оффтоп
Сервиса SuperJob провел опрос с целью узнать, часто ли россиянам приходится работать из отпуска. В опросе приняли участие 3000 граждан, имеющих постоянную работу и вот что выяснилось касательно программистов:
🌴 25% часто работают
🌴 47% иногда работают
🌴 8% ответили "нет, так как нет такой необходимости"
🌴 9% принципиально не работают во время отпуска
#оффтоп
🤩3👍1👎1
Работете из отпуска?
Anonymous Poll
13%
Да, часто
23%
Да, иногда
25%
Нет, так как нет такой необходимости
23%
Нет, принципиально не работаю во время отпуска
11%
Не хожу в отпуск
4%
Другое
👍3
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
🔥 Touchlab сделал мобильное приложение для Droidcon NYC на Android и iOS, использую Compose для каждой из платформ 😮
Это первый production на Compose iOS, который сделали еще даже до появления dev preview Compose iOS
iPhone у меня нет чтобы оценить приложения, но может вы сможете когда оно опубликуется (на момент выхода поста проходит ревью)
👉 Исходники приложения на GitHub
Это первый production на Compose iOS, который сделали еще даже до появления dev preview Compose iOS
iPhone у меня нет чтобы оценить приложения, но может вы сможете когда оно опубликуется (на момент выхода поста проходит ревью)
👉 Исходники приложения на GitHub
🤯9👎2
Structs, Classes, and Actors in iOS Interviews
Если хотите освежить в памяти теорию по value и reference типам, вспомнить, что такое акторы, статическая и динамическая диспетчеризация и потокобезопасность, welcome читать полезную статью 😎
#swift
Если хотите освежить в памяти теорию по value и reference типам, вспомнить, что такое акторы, статическая и динамическая диспетчеризация и потокобезопасность, welcome читать полезную статью 😎
#swift
👍8👎2🔥1
Danger. Автоматизируем ревью на CI и пишем свой плагин
Лучше автоматизировать все, что можно автоматизировать. Поэтому проверку кодстайла и MR тоже делегируем 🤖
О том, как реализовать свой плагин для Danger на Kotlin DSL, читайте в статье
#tools
Лучше автоматизировать все, что можно автоматизировать. Поэтому проверку кодстайла и MR тоже делегируем 🤖
О том, как реализовать свой плагин для Danger на Kotlin DSL, читайте в статье
#tools
👍6👎3🔥3
iOS Screen Navigation Engine at Revolut
В статье описан кастомный подход к навигации - Revolut Flow Engine - автомат конечных состояний для обработки flow.
Используемые сущности:
👉 FlowState - описывает состояние и логику его изменения в зависимости от примененного к нему действия
👉 FlowStep - enum с этапами
👉 Flow - возвращает следующий FlowStep в зависимости от поданного FlowState
👉 FlowPerformer - воспроизводит этапы и их логику
👉 FlowRunner - вызывает все выше в одну строчку
👉 FlowEngine - единственный на все приложение, вызывает FlowPerformer и его апдейты
Данный подход к навигации позволяет вызывать flow без дублирования кода из любого места в приложении и легче реализовать test-driven development
#navigation
В статье описан кастомный подход к навигации - Revolut Flow Engine - автомат конечных состояний для обработки flow.
Используемые сущности:
👉 FlowState - описывает состояние и логику его изменения в зависимости от примененного к нему действия
👉 FlowStep - enum с этапами
👉 Flow - возвращает следующий FlowStep в зависимости от поданного FlowState
👉 FlowPerformer - воспроизводит этапы и их логику
👉 FlowRunner - вызывает все выше в одну строчку
👉 FlowEngine - единственный на все приложение, вызывает FlowPerformer и его апдейты
Данный подход к навигации позволяет вызывать flow без дублирования кода из любого места в приложении и легче реализовать test-driven development
#navigation
👍7👎1🤔1
Autocompletion for Swift Package Manager Commands (2 мин)
Делаем свою рутину удобнее, используя алиасы для команд SPM.
Добавить в ~/.zshrc
#SPM
Делаем свою рутину удобнее, используя алиасы для команд SPM.
Добавить в ~/.zshrc
plugins=(... swiftpm)
#SPM
👍4👎1
Few ways of improving your iOS APP performance in Swift (4 мин)
Советы по оптимизации iOS приложений:
👉 Optimization level в настройках проекта (-O для наибольшей производительности)
👉 CompilationMode: Whole Module увеличит время компиляции, но может улучшить перфоманс
👉 Уменьшаем использование динамической диспетчеризации (используем модификаторы final, private, fileprivate и internal)
#performance
Советы по оптимизации iOS приложений:
👉 Optimization level в настройках проекта (-O для наибольшей производительности)
👉 CompilationMode: Whole Module увеличит время компиляции, но может улучшить перфоманс
👉 Уменьшаем использование динамической диспетчеризации (используем модификаторы final, private, fileprivate и internal)
#performance
❤2👍2👎1
Create Custom View Components in SwiftUI (4 мин)
В статье описаны способы создания кастомной view на SwiftUI:
👉 через структуру, которая соответствует протоколу View
👉 через Computed Property в extension к родительской view
👉 в функции, чтобы конфигурировать с помощью аргументов
Первый способ рекомендуется для больших компонентов, вторые два для тех, что поменьше
#swiftUI
В статье описаны способы создания кастомной view на SwiftUI:
👉 через структуру, которая соответствует протоколу View
👉 через Computed Property в extension к родительской view
👉 в функции, чтобы конфигурировать с помощью аргументов
Первый способ рекомендуется для больших компонентов, вторые два для тех, что поменьше
#swiftUI
👍3👎2
Memento Pattern with SwiftUI
Memento - один из поведенческих дизайн паттернов банды четырёх. Какую проблему он решает?
Хранить состояния (снепшоты) объекта, чтобы иметь возможность восстановить его позднее, при этом сохранить инкапсуляцию объекта.
В паттерне есть следующие роли:
👉 Caretaker ответственен за хранение стека состояний объекта. Он держит ссылку на originator и пользуется его возможностями
👉 Originator хранит текущее состояние объекта, может создать объект и воссоздать объект по данному состоянию
👉 Memento Object - и есть сам объект, который создает Originator и ссылку на который хранит caretaker.
#architecture
Memento - один из поведенческих дизайн паттернов банды четырёх. Какую проблему он решает?
Хранить состояния (снепшоты) объекта, чтобы иметь возможность восстановить его позднее, при этом сохранить инкапсуляцию объекта.
В паттерне есть следующие роли:
👉 Caretaker ответственен за хранение стека состояний объекта. Он держит ссылку на originator и пользуется его возможностями
👉 Originator хранит текущее состояние объекта, может создать объект и воссоздать объект по данному состоянию
👉 Memento Object - и есть сам объект, который создает Originator и ссылку на который хранит caretaker.
#architecture
👍3👎2❤1
Apple открыла подписку для разработчиков на сервис Xcode Cloud
C 30 августа 2022 года разработчики могут оформлять платные подписки на сервис Xcode Cloud. Цены начинаются с 50 долларов в месяц и доходят до 400. До декабря 2023 года действует бесплатный пробный план на 25 часов.
#xcode
C 30 августа 2022 года разработчики могут оформлять платные подписки на сервис Xcode Cloud. Цены начинаются с 50 долларов в месяц и доходят до 400. До декабря 2023 года действует бесплатный пробный план на 25 часов.
#xcode
👍4👎4
The Best and Fastest Ways to Install Xcode on your Mac
Известные способы установить Xcode:
👉 App Store — просто, но долго
👉 Apple’s Website — быстрее (рекомендовано автором)
👉 Через командную строку — еще быстрее, но сложнее
👉 Через Xcodes — лучшее решение?
А вы сталкивались с проблемами при установке Xcode?
#xcode
Известные способы установить Xcode:
👉 App Store — просто, но долго
👉 Apple’s Website — быстрее (рекомендовано автором)
👉 Через командную строку — еще быстрее, но сложнее
👉 Через Xcodes — лучшее решение?
А вы сталкивались с проблемами при установке Xcode?
#xcode
👍2