По итогам тестов минимизировать этот деффект вышло только масштабированием, без увеличения конкретных значений.
Поэтому масштабируйте весь элемент, будь то текст или кнопка, по отдельности:
function Button(props: IButtonProps) {
const scaleX = useSharedValue(1);
const scaleY = useSharedValue(1);
const scaleFontSize = useSharedValue(1);
const [isPressed, setIsPressed] = useState(false);
useEffect(() => {
scaleFontSize.value = animationWithRepeat(1.07070707070707072);
scaleX.value = animationWithRepeat(1.1071428571428572);
scaleY.value = animationWithRepeat(1.1111111111111111);
}, []);
return (
<AnimatedPressable style={[
styles.defaultButton,
!isPressed ? styles.notPressedButton : styles.pressedButton,
{ transform: [ {scaleX}, {scaleY} ] },
props.styles
]}>
<AnimatedText style={[
styles.defaultText,
!isPressed ? styles.notPressedText : styles.pressedText,
]}>Принять</AnimatedText>
</AnimatedPressable>
)
}