Releases: surfstudio/iOS-Utils
Правки проекта, AttributedString updates
- Добавлен параметр
paragraphSpacing
вAttributedString
- Правки проекта, добавлен Example проект
- Удалена утилита
OTPField
- Повышена минимальная iOS версия до 11ой
Закрыт issue
MapRoutingService и правки для StringAttributes
В новой версии появилась утилита MapRoutingService
, которая позволяет получить список приложений для работы с навигацией, установленных на устройстве пользователя, а также отобразить точку/построить маршрут до заданной точки в одном из них. (ссылка на PR)
Но самая важная правка в StringAttributes. Изменения коснулись атрибута lineHeight, отвечающего за высоту строки:
- раньше необходимо было задачть два параметра - font и lineHeight из фигмы, на основе которых задавалось расстояние между строками (
lineSpacing
) - теперь достаточно только одного - lineHeight из той же фигмы, на основе которого будет задаваться
- либо
lineHeightMultiple
как соотношениеparagraph.lineHeightMultiple = lineHeight / font.lineHeight
, если среди других атрибутов строки будет передан font - либо
minimumLineHeight
иmaximumLineHeight
, если font среди других атрибутов передаваться не будет
- либо
Ссылка на PR.
Обратите внимание!
Поясню проблемы при миграции на примере. У нас есть текст, кегль шрифта например 16, системная font.lineHeight
его при этом равняется 18, а нам нужно чтобы она была 20. Мы передавали атрибут .lineHeight(20, font)
. Теперь достаточно только .lineHeight(20)
, с условием что атрибут .font(...)
будет передан отдельно, что обычно и бывает. Проблема:
- при старом подходе, когда атрибут задавал межстрочное расстояние, высота одной строки всегда равнялась 18. Двух - 38 (20+18), трех 58... то есть lineHeight * (кол-во строк - 1) + font.lineHeight. Но фигма работает по другому, она тупо умножает lineHeight на кол-во строк
- новый подход будет работать так, как работают размеры в фигме - кол-во строк умножить на параметр атрибута lineHeight
В силу чего ваш дизайн может поехать, простите) Варианта два:
- при миграции явно указывать lineSpacing, чтобы остаться со старым вариантом layout-а
- перейти на новый подход, отладить и жить дальше в шоколаде, зная что высоты текстовых контейнеров у вас будут один-в-один как фигме)
Спасибо всем причастным! @paradi2e, @Alelenka, @gmngg, @tranina-olesya, @Ikeret, @chausovSurfStudio и @gregoryvit 🎉
Обновление UIDevice
Сборка с обновлениями для утилиты UIDevice. В сборку вошли
Фактически, переходим на собственную поддержку и развитие не поддерживаемой более библиотеки Device
Спасибо за проделанную работу @kombatkos и за проведенное code-review @Alelenka 🎉
Поддержка SPM и baseLine в StringBuilder
Load View with Bundle #77
Добавлена возможность установить Bundle вне функции в методах загрузки View.
SPM support added #72
- Добавлена поддержка SPM, но только для iOS и для всех утилит сразу (то есть можно подключить все утилиты сразу через SPM, по отдельности пока нет возможности)
- Для CI добавлена проверка корректности поддержки SPM
Add baseLine offset and add method .add(attribute) #75
- В
StringAttribute
добавлен параметрbaselineOffset
- В
StringBuilder
добавлена функция.add
в для добавленияNSAttributedString
❤️ Спасибо @Vadim4016 @Alelenka @KorolevSoftware
Very Big Release
Новое
Mail Util
- добавил утилиту, которая умеет открывать форму для отсылки email сообщений. В случае, если не сможет открыть email форму внутри приложения MFMailComposeViewController - открывает стандартную почту
- добавил документацию (описал пример интеграции)
- повысил версию до 10.1.0
SecurityService + CryptoBox
- Добавлен SecurityService, который умеет шифровать/дешифровать данные по ключу, а так же содержит keychain сервис
- Содержит полную реализацию для подключения шифрования пином
BeanPageControl
- Добавлен page control с перетекающими индикаторами-бобами
TouchableControl
Позволяет принимать на вход различные UI элементы и, при нажатии на этот контрол,
анимировать их, иммтируя как бы нажатие на кнопку. То есть, по сути является аналагом кнопки с возможностью кастомизировать анимацию
нажатия(затемнение или изменение цвета только некоторых элементов)
CustomSwitch
Гибко кастомизируемая реализация свитча
LoadingView
Набор классов и протоколов для удобного отображения загрузочных состояний с шиммерами
MoneyModel
Структура для работы с деньгами
Обновления
UIImageExtensions
- добавлены методы badgedImage и drawInitials, для рисования бейджа и инициалов на картинке соответственно
StringBuilder
- депрекейтнул старые методы
- добавил новый метод API и переосмыслил вставку разделителей между частями строки
- разделитель теперь относится к части строки (чтобы избежать бага описанного выше)
- разделитель можно повторять несколько раз
Багфикс
Bundler, Pods, UIDevice, LayoutHelper, UIStyle
Добавили в проект Bundler, настроил и проверил что проект собирается
Добавили зависимостью swiftLint, а то он вроде был, но он не прогонялся когда билдишь, а люди по всей видимости забывали это делать.
Добавил extension на UIDevice, он нужен для след. утилиты. Там набор методов, которые позволяют определить текущий девайс.
Добавил утилиту LayoutHelper.
Добавил класс UIStyle
Спасибо @fixique за гигантский объем работы!
SkeletonView bugfix
Каждый раз когда появлялся footer запускалась анимация, а старая не удалялось.
Как оказалось каждый раз вызывался draw, при вызове которого добавлялся новый слой градиента и не удалялся старый.
Проблема решена удалением старого слоя градиента перед добавлением нового.
LineBreakMode
Теперь в StringAttributes есть возможность задать line break mode.
Спасибо @chausovSurfStudio
GeolocationService и обновление StringAttributes
Новая утилита GeolocationService - сервис для определения геопозиции пользователя.
Атрибут crossOut
в StringAttributes - теперь вы можете вычеркнуть что-нибудь.
Спрятали JailBreakDetector и добавили удобную кнопку
Теперь во время реверс-инженеринга найти код, отвечающий за определение JailBreak'а будет сложнее.
Переименовали JailbreakDetect
в BrightSide
Появилась кнопка CommonButton
с удобным интерфейсом для настройки отображения.
Появились расширения для UIImage, позволяющие одним вызовом получить UIImage залитый нужным цветом.
Спасибо @fixique @chausovSurfStudio !