React-native:均匀缩放图像,叠加文本

时间:2018-02-21 14:20:25

标签: javascript react-native

我正在尝试学习使用react-native,有些甚至非常简单的任务似乎非常复杂。例如,将图像均匀地缩放到屏幕宽度的给定百分比(或者更确切地说,可以是父节点的宽度)。我无法找到一种简单的方法,可以在所有情况下使用。

如果我用flexDirection创建一个视图:'row',我发现我可以添加一个缩放到的图像,例如。使用样式{width:'15%',resizeMode:'contains',aspectRatio:1},可以看到View的15%宽度。

但是,如果我将图像添加到带有flexDirection的视图:'column',则上述操作不起作用(实质上,宽度样式无效)。我无法想出任何其他方法,而不是添加具有flexDirection的子视图:'row',并包含具有这些样式的图像。这似乎是一种非常人为的做法,我可能会遗漏一些东西。人们会认为组件应该有某种“规模”属性,但我找不到任何这样的东西。

现在我遇到的实际问题是,现在我需要在这样的图像上叠加一些文本。图像不能再包含子节点,推荐的方法是使用ImageBackground。

问题是ImageBackground在这种情况下的行为不像Image。如果我使用与上面相同的样式,它会做一些奇怪的事情:它似乎创建了一个具有正确宽度的视图,例如。 15%或父母的宽度,然后从左侧和右侧裁剪图像本身,以便只留下15%的中心列(并在此视图中左对齐)。所以它有两次缩小到15%:一次创建视图,另一次将图像从侧面裁剪到另外15%。 (通过尝试不同的百分比,可以证实它正是这样做的事实。)

所有这些看起来都异常复杂,并且只是在几乎任何图形引擎中只有几个单行的东西。这应该怎么做?

所有教程和人们问题的答案只谈到将图像缩放到某个定义的点大小(如150x150),而不是屏幕宽度或高度的百分比(考虑到屏幕尺寸和分辨率,这将更有用)可以变化很多)。

0 个答案:

没有答案