React Native 当尝试添加虚线边框样式时,仅在iOS中出现“不支持的虚线/点线边框样式”

w6mmgewl  于 2023-01-14  发布在  React
关注(0)|答案(3)|浏览(482)

以下是我的视图样式

<View
 style={{
          flexDirection: 'column',
          marginTop: 15,
          borderTopWidth: 2,
          borderStyle: 'dashed',
          borderTopColor: 'rgb(225, 225,225)',
          margin: 20,
          alignSelf: 'center',
          paddingTop: 10,
   }}
>

在安卓系统上,我看到一条漂亮的虚线

但在iOS上,我看不到任何行

以及

WARN Unsuppported dashed / dotted border style

AND包含视图的其余部分根本不呈现

6l7fqoea

6l7fqoea1#

我已经在评论中提到,我不知道为什么会失败,在我看来这是一个bug。GitHub上有类似的问题GitHub这里,这里和这里。
由于它在Android上工作,但在iOS上不工作,我们可以利用overflow: hidden的用法。**这在Android上不工作。这仅适用于iOS!**如果以上在Android上工作,那么您可以通过Platform module使用条件解:Platform.OS === 'ios' ? ... : ....

<View style={{ overflow: 'hidden'}}>
    <View style={{ borderStyle: 'dashed', borderWidth: 1, borderColor: 'red', margin: -2, marginTop: 0}} />
</View>

诀窍是使用overflow: hidden作为父节点,然后设置borderWidth: 1,同时额外设置一个负边距margin: -2,我们将顶部的边距重置为零,这会伪造一个顶部虚线边框。
下面是一个子视图的示例,以及它在iOS上的外观。

<SafeAreaView style={{ margin: 20 }}>
   <View style={{ overflow: 'hidden' }}>
     <View
       style={{
         borderStyle: 'dashed',
         borderWidth: 1,
         borderColor: 'red',
         margin: -2,
         marginTop: 10,
       }}>
       <View style={{ height: 200, width: 200 }} />
     </View>
   </View>
</SafeAreaView>

7ivaypg9

7ivaypg92#

它不工作,因为你设置的borderTopWidth而不是borderWidth.如果你想要一个虚线,你有两个选项在我看来:1-使用react-native-dash等库2-使用此解决方案=〉

<View style={{ height: 1, width: '100%', borderRadius: 1, borderWidth: 1, borderColor: 'red', borderStyle: 'dashed' }} />
a9wyjsp7

a9wyjsp73#

这是我如何管理:

<View style={{overflow: 'hidden'}}>
        <View
          style={{
            borderStyle: 'dashed',
            borderWidth: 1,
            borderColor: '#000',
            margin: -1,
            height: 0,
            marginBottom: 0,
          }}>
          <View style={{width: 60}}></View>
        </View>
      </View>

相关问题