tgoop.com/iosdev/1628
Create:
Last Update:
Last Update:
Элегантное решение для растягивающегося заголовка в SwiftUI
Один из наиболее эффектно выглядящих и несложных в реализации элементов — сохранять позицию вью при скролле (чаще всего вместе с масштабированием).
📖 В этом способе, предложенном Натальей Парфёновой используется модификатор visualEffect (доступен с iOS 17).
Пример использования:
extension View {
func stretchy() -> some View {
visualEffect { effect, geometry in
let currentHeight = geometry.size.height
let scrollOffset = geometry.frame(in: .scrollView).minY
let positiveOffset = max(0, scrollOffset)
let newHeight = currentHeight + positiveOffset
let scaleFactor = newHeight / currentHeight
return effect.scaleEffect(
x: scaleFactor, y: scaleFactor,
anchor: .bottom
)
}
}
}
К слову, вот в этом проекте можно чекнуть и другие эффекты при скролле (+ работу с цветами, переходами и не только с помощью шейдеров и рендеринга текста).