Найти в Дзене
Чем отличается RunLoop от DispatchQueue.main
RunLoop и DispatchQueue.main оба работают с главным потоком, но имеют различия в подходах к управлению событиями и выполнению задач: • RunLoop.main — это событийный цикл, который управляет обработкой входных событий (например, пользовательские касания, таймеры) на главном потоке. Код, который планируется через RunLoop.main, исполняется только тогда, когда RunLoop работает в режиме .default. Если происходит пользовательское взаимодействие (например, скроллинг), RunLoop переключается в другой режим (например, UITrackingRunLoopMode), и задачи, запланированные в RunLoop.main, могут быть отложены до завершения этого взаимодействия...
4 часа назад
Что делает модификатор .truncationMode
() Модификатор .truncationMode() используется для текста, который длиннее своего поля и указывает, с какой стороны обрезать текст: - .tail - то есть с конца, - .head - то есть с начала, - .middle - то есть в середине. По умолчанию (если не вызывать модификатор) применяется вариант ...
4 дня назад
Вчера мы рассказывали, как сделать, чтобы поменялись иконки SF Symbols, если вы локализуете приложение на арабский
(Там жизнь идет справа на лево: ссылки открываются влево, текст выравнивается по правому краю, то есть все зеркально наоборот) Сегодня мы расскажем, как сделать, чтобы поменялись изображения, например, если вы используете какую-нибудь кастомную стрелочку, которая в арабском варианте приложения должна была бы поворачиваться наоборот...
1 неделю назад
Допустим у вас приложение, которое нужно локализовать на арабский
Если вы не в курсе, там жизнь идет справа на лево: ссылки открываются влево, текст выравнивается по правому краю, то есть все зеркально наоборот. Если вы работаете в SwiftUI, то система за вас все сделает сама, все выравнивание .leading станет по правому краю, .trailing - по левому и т...
1 неделю назад
Что такое String Catalog в Xcode
String Catalog (файлы с расширением .xcstrings) — это современный, рекомендованный Apple способ управления всеми статическими текстовыми строками в приложениях для iOS, macOS, watchOS и tvOS. Проще говоря, это единый централизованный файл, который заменяет старые файлы Localizable.strings и служит для локализации (перевода) вашего приложения на разные языки. Раньше для каждого языка нужно было создавать отдельный файл Localizable.strings (например, en.lproj/Localizable.strings, fr...
2 недели назад
- Для каждой строки отображается статус
: 1. Нет перевода (Missing): Перевод для выбранного языка отсутствует. 2. Нужна проверка (Needs Review): Строка была изменена в исходном языке (например, на английском), и перевод, возможно, устарел и требует обновления. 3. Переведено (Translated): Всё готово. 4. Плюрализация (множественное число): Очень просто настраивать формы множественного числа для разных языков (например, "%d file" -> "%d файл", "%d файла", "%d файлов" в русском). Раньше это было сложной задачей с использованием .stringsdict. - Xcode предлагает функцию "Встроенный машинный перевод",...
2 недели назад
Что такое PasteButton
() PasteButton - это стандартный элемент SwiftUI, который берет данные из буфера обмена и передаёт их в замыкание, которое выполняется при нажатии PasteButton Если короче: это кнопка, которая вставит текст из буфера обмена в ваше приложение: PasteButton имеет стандартный дизайн, которому вы можете изменять цвет и окантовку...
2 недели назад
Что за метод .formatted
Метод .formatted - это метод типа Date, который преобразует Date в строку и позволяет задать стиль, аналогично DateFormatter. Вид по умолчанию и все варианты стилизации показаны на нашем принтскрине....
2 недели назад
Что такое @unknown default
@unknown default — это специальный атрибут для блока default в операторе switch при работе с перечислениями (enum). Он используется для обработки возможных будущих случаев, которые могут быть добавлены в enum позже. Когда вы используете switch с enum, компилятор требует, чтобы вы обработали все возможные случаи (cases). @unknown default позволяет: - Обрабатывать все текущие случаи явно...
3 недели назад
А вы знали
? Если вам нужно, чтобы элемент Grid занимал всю строку, то вы не используете контейнер GridRow А в нашей статье мы полностью рассмотрели элемент Grid
3 недели назад