【发布时间】:2017-07-16 11:16:48
【问题描述】:
我试图让 ScrollView 中的图像占据屏幕的整个宽度,同时保持其纵横比(我不想要固定的背景图像)。 https://github.com/facebook/react-native/issues/950 中的答案似乎适用于 View 但不适用于 ScrollView。
空宽度/高度技巧只会使图像消失。由于某种原因,使用Dimensions.get('window').width 设置宽度不起作用;根据图像的纵横比,它会在图像的顶部和底部或左侧和右侧留下一些空间。
我不能使用Image.getSize(),因为图像是本地图像,我宁愿避免对尺寸进行硬编码,因为我有许多其他图像需要以这种方式设置样式。我尝试了许多其他flex、alignSelf 等的组合,但似乎都没有。
【问题讨论】:
-
如果您知道所有图像具有相同的纵横比,您可以通过以下方式计算:
const imageHeight = imageWidth / aspectRatio;或使用 0.40 新样式属性:github.com/facebook/react-native/commit/… 我遇到了同样的问题,但我是使用远程图像,所以我设法使用getSize并自己计算尺寸。找不到任何其他解决方案。 -
不,它们的纵横比并不相同,这就是为什么我说我想避免硬编码。
-
图像组件不会根据图像纵横比调整自身大小。因此,您必须获取图像大小并进行一些计算。这与对尺寸进行硬编码不同。我猜你可以在每个图像组件上使用 aspectRatio 样式。在 RN 0.40 之前,我构建了自己的组件,可以根据图像纵横比在
onLayout内调整自身大小。如果 aspectRatio 样式不起作用,或者您不能使用 0.40,我可以与您分享我的代码。 -
所以无论使用哪种方法,我都必须事先计算所有纵横比?
标签: react-native