Нажатие на превью переводит фото из его места в сетке на весь экран: рамка превью плавно превращается в рамку всего снимка с исходными пропорциями. Внутри — щипок с фокусом между пальцами, двойной тап для приближения в точку, перетаскивание приближенного снимка с границами.
Без зума фото можно утянуть вверх или вниз: фон гаснет, снимок уменьшается, а за порогом dismissDistance возвращается в свою ячейку. Одиночный тап тоже закрывает. Просмотр открывается в Modal, так что перекрывает навигацию и вкладки.
Поставьте зависимости:
npm install react-native-gesture-handler react-native-reanimated react-native-workletspnpm add react-native-gesture-handler react-native-reanimated react-native-workletsyarn add react-native-gesture-handler react-native-reanimated react-native-workletsbun add react-native-gesture-handler react-native-reanimated react-native-workletsСкопируйте эти файлы в src/shared/components/organisms/photo-lightbox/:
Код доступен по подпискеPro
Исходник «Лайтбокс» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
Проверьте алиас путей. Импорты в коде выше записаны так, как их пишет astra-rn add: @/shared/components, @/shared/utils и @/shared/hooks. Нужен алиас "@/*": ["./src/*"] в tsconfig.json — или поправьте импорты под свои пути.
Код доступен по подпискеPro
Исходник «Лайтбокс» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
imagesТип readonly PhotoLightboxImage[]
columns?Тип number
gap?Тип number
radius?Тип number
thumbAspect?Тип number
backdropColor?Тип string
maxZoom?Тип number
doubleTapZoom?Тип number
dismissDistance?Тип number
onOpen?Тип (index: number) => void
onClose?Тип (index: number) => void
style?Тип StyleProp<ViewStyle>
openТип (index: number) => void
closeТип () => void