如何在 React Native 中正确旋转和翻译文本 90 度?

Posted

技术标签:

【中文标题】如何在 React Native 中正确旋转和翻译文本 90 度?【英文标题】:How to rotate and translate the Text 90 degree correctly in React Native? 【发布时间】:2021-11-19 17:16:31 【问题描述】:

我正在尝试实现此布局

这是我的视图代码sn-p

<View style=[
    flexDirection: 'row',
    backgroundColor: 'white', 
    borderRadius: 8
]>

    <Text style=
        color: 'white',
        backgroundColor: 'red',
        paddingStart: 12,
        paddingEnd: 12,
        transform: [
             rotate: '-90deg' ,
        ]

    >`Sample Text`</Text>

    <View >

        <Text>Right Content will be here</Text>
    </View>
</View>

输出

我当前实现的问题是

旋转的视图未定位在定位 容器视图的高度不受旋转视图的宽度或高度的影响

如何以一种可以调整字体大小可访问性设置的方式修复它?

【问题讨论】:

【参考方案1】:

您可以使用转换。

https://facebook.github.io/react-native/docs/transforms.html#proptypes

myStyle: 
    transform: [ rotate: '90deg']

【讨论】:

感谢您的回答。好吧,我已经在我现有的代码中使用了它。【参考方案2】:

通过很少的研究,我已经实现了我的目标。我根据旋转文本的高度和宽度来操作文本容器的 x、y 位置

解决方案

function MyComponent() 

    const [height, setHeight] = React.useState(0)
    const [width, setWidth] = React.useState(0)

    return (
        <View style= marginTop: 300 >


            <View style=[
                flexDirection: 'row',
                backgroundColor: 'white',
                marginStart: 16,
                marginEnd: 16,
                borderRadius: 8,
                overflow: 'hidden',
                minHeight: width,
            ]>

                <View style=
                    backgroundColor: 'yellow',
                    transform: [
                         translateX: -(width / 2 - height / 2) * 2 
                    ]
                >
                    <Text
                        style=
                            color: 'white',
                            backgroundColor: 'red',
                            paddingStart: 12,
                            paddingEnd: 12,
                            transform: [
                                 rotate: '-90deg' ,
                                 translateY: (width / 2 - height / 2) ,
                                 translateX: -(width / 2 - height / 2) 
                            ]

                        
                        onLayout=(e) => 
                            setHeight(e.nativeEvent.layout.height)
                            setWidth(e.nativeEvent.layout.width)
                        
                    >`Sample Text`</Text>
                </View>

                <View style=
                    backgroundColor: 'yellow',
                    width: '100%',
                    justifyContent: 'center',
                    alignItems: 'center',
                    transform: [
                         translateX: -(width / 2 - height / 2) * 2 
                    ]
                >

                    <Text>Right Content will be here</Text>
                </View>
            </View>
        </ View>
    )

输出

【讨论】:

以上是关于如何在 React Native 中正确旋转和翻译文本 90 度?的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用屏幕旋转(react-native)?

如何在 React Native 中制作微调器?我想通过 PanResponder 旋转框

如何在 React Native youtube iframe 中切换到全屏(单击 YouTube 播放器 gui 上的全屏按钮旋转到横向)?

如何在本机反应中解锁一个屏幕上的旋转

React native orientation 屏幕旋转监听

如何使用 react-native-firebase v5 正确设置前台通知?