【问题标题】:How to use SVG-Uri in React-native or Expo?如何在 React-native 或 Expo 中使用 SVG-Uri?
【发布时间】:2019-05-22 01:04:51
【问题描述】:

我下载了expo-svg-uri module 以使用 Svg 图片。

但图像显示不正确。

我失败的代码:

  <View style={styles.container}>
    <SvgUri
      width="200"
      height="200"
      source={require("../../image/minigroup.svg")}
    />
  </View>

图片失败

原图

这是我的 svg 文件

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80" height="183" viewBox="0 0 80 183">
    <defs>
        <circle id="b" cx="35" cy="35" r="35"/>
        <filter id="a" width="142.9%" height="142.9%" x="-21.4%" y="-21.4%" filterUnits="objectBoundingBox">
            <feOffset in="SourceAlpha" result="shadowOffsetOuter1"/>
            <feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="5"/>
            <feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.12 0"/>
        </filter>
        <circle id="d" cx="35" cy="34" r="24"/>
        <filter id="c" width="168.8%" height="168.8%" x="-28.1%" y="-28.1%" filterUnits="objectBoundingBox">
            <feOffset dx="3" dy="3" in="SourceAlpha" result="shadowOffsetOuter1"/>
            <feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="5"/>
            <feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.12 0"/>
        </filter>
        <circle id="f" cx="35" cy="34" r="12"/>
        <filter id="e" width="208.3%" height="208.3%" x="-45.8%" y="-45.8%" filterUnits="objectBoundingBox">
            <feOffset dx="2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"/>
            <feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="4"/>
            <feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.12 0"/>
        </filter>
    </defs>
    <g fill="none" fill-rule="evenodd">
        <text fill="#646464" font-family="Bungee-Regular, Bungee" font-size="20" letter-spacing="-.375">
            <tspan x="6.107" y="163">Point</tspan>
        </text>
        <text fill="#3D3D3D" font-family="Bungee-Regular, Bungee" font-size="20" letter-spacing="-.375">
            <tspan x="20.282" y="140">Tap</tspan>
        </text>
        <g transform="translate(5 5)">
            <rect width="70" height="81" y="28" fill="#FFD90D" rx="12"/>
            <use fill="#000" filter="url(#a)" xlink:href="#b"/>
            <use fill="#FFD90D" xlink:href="#b"/>
            <use fill="#000" filter="url(#c)" xlink:href="#d"/>
            <use fill="#FFD90D" xlink:href="#d"/>
            <g>
                <use fill="#000" filter="url(#e)" xlink:href="#f"/>
                <use fill="#FFD90D" xlink:href="#f"/>
            </g>
        </g>
    </g>
</svg>

我没有路径值,我只是在绘制它。你是说这可能吗?

请多多帮助。提前谢谢你。

【问题讨论】:

    标签: react-native svg react-native-android expo react-native-ios


    【解决方案1】:

    第一

    • 将您的 svg 文件拖入此在线工具SVGOMG
    • 切换到标记选项卡。
    • 复制path xml 标记的d 属性。

    第二

    如果您使用 expo,react-native-svg 已经安装并链接

    呈现主页图标的示例:

    <Svg
      width="20"
      height="20"
      viewBox="0 0 512 512" // Has to be the same of the original svg file
    >
      <Path
        d="M208 448V320h96v128h97.6V256H464L256 64 48 256h62.4v192z"
        fill="red"
      />
    </Svg>
    

    这也可以为您节省加载和读取文件的成本......

    【讨论】:

    • 你是说我应该自己用svg做一个图标?
    • 您正在使用的模块实际上是提取您的 svg 文件的路径并将其传递给 react-native-svg ...这是一个桥梁...所以您所做的就是获取路径(d arg)你的 minigroup.svg 文件并按照我在 ex 中提到的那样使用它,就是这样
    • 如果需要从svg文件中提取路径并使用,如何提取?
    • 使用我在回答SVGOMG中提到的在线工具
    • @Hend El-Sahli 看着我的图片,没有路径。
    猜你喜欢
    • 2017-09-13
    • 2023-03-13
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 2022-10-15
    相关资源
    最近更新 更多