Как стать автором
Обновить
8
0
Михаил Масло @mikhailmaslo

Пользователь

Отправить сообщение

Спасибо за статью! В Joom решали очень похожую задачу - кэширование carthage-зависимостей и проверку на актуальность Carthage/Build

В префикс кэша мы дополнительно включаем конфигурацию: Debug / Release. Из-за этого, когда возникает задача проверки актуальности зависимостей в Build , то надо узнать как эти зависимости собраны через Release или Debug конфигурацию (иначе можно, например, собрать Release Candidate с зависимостями собранными с Debug конфигурацией)

Сталкивались ли с такой задачей? Как решали?

Привет! Хороший вопрос, в статье этому не уделяется внимания

Для интерактивного транзишена используется UIPercentDrivenInteractiveTransition. У него есть два свойства, которые влияют на завершение транзишена: completionSpeed и completionCurve

В момент, когда транзишен заканчивается, мы можем изменить эти параметры и повлиять на скорость, чтобы избежать подергиваний в конце. Ниже приведу пример, изменяя только completionSpeed в интерактивном pop транзишене navigation controller'a

private func endTransition(isCancelled: Bool) {
  setCompletionSpeedIfNeeded(threshold: 0.5, factor: 1.5)
  if isCancelled {
    transition?.cancel()
  } else {
    transition?.finish()
  }

  transition = nil
}

private func setCompletionSpeedIfNeeded(threshold: Double, factor: Double) {
  guard 
    let transition = transition,
    transition.percentComplete < threshold 
  else { return }

  transition.completionSpeed = max(pow(transition.percentComplete, factor), 0.01)
}

Скорость транзишена теперь зависит от percentComplete. Константы подобраны на коленке. Их и вид функции можно подобрать под себя

Замедленное завершение транзишена
Замедленное завершение транзишена

В начале статьи есть отссылка к Sheets, которые появились в SDK iOS 15. Я дополнил этот блок ссылкой на HIG, в котором Apple показывает, когда использовать Sheets уместно

Простыми словами Bottom Sheet - это "шторка, которая выезжает снизу". Такая "шторка" есть системных приложениях: Apple Maps, Stocks, Voice Memos и т.д.

Apple Maps, Stocks, Voice Memos
Apple Maps, Stocks, Voice Memos

Bottom Sheet в статье отличается от Sheets SDK iOS. В SDK iOS используются фиксированные размеры (т.н. detents): половина и полный экран. В предоставленном мною решении размер Bottom Sheet определяется размером контента

Учёл ваше замечание в финальной ветке проекта, спасибо!

Привет! Спасибо за комментарий!

Действительно, закругление происходит у всех углов из-за cornerRadius. Более корректно будет использовать UIBezierPath

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность