相关疑难解决方法(0)

如何使用 react-native-svg 找到宽度、高度和 viewBox 的正确值

我一直在尝试做一些看起来很简单的事情,但我已经尝试了几个小时,但找不到解决方案。

我有一个需要位于屏幕顶部的 SVG。它来自具有以下尺寸的设计师:

<Svg width="354px" height="190px" viewBox="0 0 354 190">...</Svg>
Run Code Online (Sandbox Code Playgroud)

React Native 中,这将进入容器内部,SVG 需要占据屏幕的整个宽度,我从中获取:

Dimensions.get("window").width
Run Code Online (Sandbox Code Playgroud)

我的问题是,我还没有找到一种方法来缩放 SVG 以占据屏幕宽度的 100%,找出正确的高度(或自动设置它的方法),并保留纵横比。我已经尝试了一百万次,包括使用容器的aspectRatio样式及其高度(或根本不设置高度)。每当我发现一些有效的“比例”时,我都会尝试使用不同屏幕宽度的不同设备,但它看起来一点也不好看(裁剪过,小于屏幕宽度等)。

我觉得SVG (react-native-svg) 中的preserveAspectRatio属性在某种程度上与aspectRatio风格相冲突。我完全迷失了preserveAspectRatio,我还没有找到一种方法来使它缩放而不被裁剪。

有谁知道如何实现这一目标?

这是我的最终代码,它返回一个显示 SVG 的 HeatMap 组件,但尽管它具有正确的高度,但 SVG 的一部分从右侧超出了屏幕(看起来被裁剪,因为它太宽了):

const windowWidth = Dimensions.get("window").width;

const getSVGRootProps = ({ width, height }) => ({
  width: "100%",
  height: "100%",
  viewBox: `0 0 ${width} ${height}`,
  preserveAspectRatio: "xMinYMin meet",
});

const FieldShape = () => {
  const width = 354; …
Run Code Online (Sandbox Code Playgroud)

css svg aspect-ratio react-native

5
推荐指数
2
解决办法
4855
查看次数

标签 统计

aspect-ratio ×1

css ×1

react-native ×1

svg ×1