Untitled
unknown
typescript
2 years ago
1.5 kB
11
Indexable
function ProfileHeader() {
const { profileId, contentOffsetY, isLoading } = useProfileScreenContext();
const bannerStyle = useAnimatedStyle(() => ({
height: interpolate(
contentOffsetY!.value,
[0, 150],
[150, 100],
Extrapolate.CLAMP,
),
opacity: interpolate(
contentOffsetY!.value,
[0, 150],
[1, 0.5],
Extrapolate.CLAMP,
),
}));
}
const avatarStyle = useAnimatedStyle(() => ({
top: interpolate(
contentOffsetY!.value,
[0, 150],
[107, 45],
Extrapolation.CLAMP,
),
height: interpolate(
contentOffsetY!.value,
[0, 150],
[85, 45],
Extrapolation.CLAMP,
),
width: interpolate(
contentOffsetY!.value,
[0, 150],
[85, 45],
Extrapolation.CLAMP,
),
left: interpolate(
contentOffsetY!.value,
[0, 150],
[15, 60],
Extrapolate.CLAMP,
),
}));
return (
// First image
<Animated.Image
source={{ uri: personBanner }}
style={[{ width: '100%' }, bannerStyle]}
resizeMode="cover"
/>
// Second image
<Animated.Image
source={{ uri: personAvatar }}
style={[
{
borderRadius: 100,
borderColor: theme.bg.val,
borderWidth: 2,
},
avatarStyle,
]}
/>
);
}Editor is loading...