【发布时间】:2018-03-16 13:04:00
【问题描述】:
我正在尝试在 React Native 中实现如下效果:
图片的角落有一个按钮。无论图像的大小或纵横比如何,按钮始终位于图像的一角,并且图像的任何部分都不会被剪裁(始终按比例缩小以完全放入框内)。
我在 React Native 中遇到的问题是 Image 组件的大小并不总是与图像的缩小尺寸相匹配。如果我将图像的高度固定为 300,设置 flex 1 以使图像的宽度扩大以填充其内容,并且图像是肖像,Image 组件具有容器的全宽,但组件内的图像将具有宽度要小得多。因此,让一个视图覆盖另一个视图的典型方法并不像我希望的那样工作 - 我的覆盖还覆盖了图像周围的填充,并且按钮(锚定到角落)出现在图像之外。
这是 React Native 中的样子:
X 是按钮的占位符。它被设置为锚定到 View 的左上角,该 View 是 Image 的子视图的子视图。图片的 backgroundColor 设置为绿色,以演示 Image 组件的宽度与组件内部图片的宽度有何不同。
目标是无论纵横比如何,X 都将位于图像内部。我想我可以基于抓取图像的尺寸并缩放 Image 组件的高度和宽度来做一些事情,但这听起来既复杂又脆弱。这是否可以通过样式响应的方式实现?
演示代码:
<View
style={{
marginLeft: 7,
marginRight: 7,
backgroundColor: 'blue',
}}
>
<View
style={{
height: 300,
flex: 1,
}}
>
<Image
source={imageSource}
style={{
flex: 1,
height: undefined,
width: undefined,
backgroundColor: 'green',
}}
resizeMode="contain"
/>
</View>
<View
style={{
position: 'absolute',
right: 5,
top: 5,
backgroundColor: 'transparent',
}}
>
<Text style={{ color: 'white' }}>X</Text>
</View>
</View>
【问题讨论】:
标签: javascript image react-native