Fix ViewShot dropping frames and stickers on Android by grouping all layers into a single composited parent View

This commit is contained in:
2026-06-01 10:08:55 +02:00
parent ba8248fcc2
commit e069fef170
2 changed files with 25 additions and 22 deletions
+1
View File
@@ -19,6 +19,7 @@ export default function FrameOverlay({ frameAsset }: FrameOverlayProps) {
source={frameAsset}
style={styles.frameImage}
resizeMode="cover"
fadeDuration={0}
/>
</View>
);
+24 -22
View File
@@ -445,31 +445,33 @@ export default function PreviewScreen({
style={styles.viewShotContainer}
collapsable={false}
>
{renderCollageView()}
<View style={StyleSheet.absoluteFill} collapsable={false}>
{renderCollageView()}
{/* Frame Overlay */}
{activeFrame && <FrameOverlay frameAsset={activeFrame.asset} />}
{/* Frame Overlay */}
{activeFrame && <FrameOverlay frameAsset={activeFrame.asset} />}
{/* Date/Time Overlay */}
{dateOverlay !== 'off' && (
<View style={[styles.dateOverlay, getDatePositionStyle()]} pointerEvents="none">
<Text style={styles.dateOverlayText}>
{formatDate(dateOverlay)}
</Text>
</View>
)}
{/* Date/Time Overlay */}
{dateOverlay !== 'off' && (
<View style={[styles.dateOverlay, getDatePositionStyle()]} pointerEvents="none">
<Text style={styles.dateOverlayText}>
{formatDate(dateOverlay)}
</Text>
</View>
)}
{/* Stickers */}
{stickers.map((sticker) => (
<DraggableSticker
key={sticker.id}
sticker={sticker}
isSelected={selectedStickerId === sticker.id}
onSelect={handleStickerSelect}
onDelete={handleStickerDelete}
onUpdate={handleStickerUpdate}
/>
))}
{/* Stickers */}
{stickers.map((sticker) => (
<DraggableSticker
key={sticker.id}
sticker={sticker}
isSelected={selectedStickerId === sticker.id}
onSelect={handleStickerSelect}
onDelete={handleStickerDelete}
onUpdate={handleStickerUpdate}
/>
))}
</View>
</ViewShot>
{/* Sticker Tray (outside ViewShot — not captured) */}