我使用React Native的图像标签来显示宽度和高度可变的图像.我已经将图像设置为100x50,并将resizeMode=contain设置为几乎完美的大小,但是如果调整图像的大小,它将在垂直和水平方向上完全居中显示.这种行为可以改变吗?模拟屏幕截图:

enter image description here

红色框表示图像元素设置为100x50.笔记本电脑图片代表可变宽度/高度图片.你会注意到,这种行为会将所有东西垂直或水平居中推.

在第二个例子中,我希望将占据100%高度和大约一半宽度的图片向左对齐.这可能吗?

谢谢

推荐答案

总之,为了在将来节省一些时间,我想出了一个快速而肮脏的方法来解决这个问题:

logoSize(width, height) {
  var maxWidth = 110;
  var maxHeight = 30;

  if (width >= height) {
    var ratio = maxWidth / width;
    var h = Math.ceil(ratio * height);

    if (h > maxHeight) {
      // Too tall, resize
      var ratio = maxHeight / height;
      var w = Math.ceil(ratio * width);
      var ret = {
        'width': w,
        'height': maxHeight
      };
    } else {
      var ret = {
        'width': maxWidth,
        'height': h
      };
    }

  } else {
    var ratio = maxHeight / height;
    var w = Math.ceil(ratio * width);

    if (w > maxWidth) {
      var ratio = maxWidth / width;
      var h = Math.ceil(ratio * height);
      var ret = {
        'width': maxWidth,
        'height': h
      };
    } else {
      var ret = {
        'width': w,
        'height': maxHeight
      };
    }
  }

  return ret;
}

这将获取图像的宽度和高度,进行一些比率计算,并根据顶部的maxWidth和maxHeight变量吐出一组尺寸.然后,您可以采用上述方法给出的尺寸,并将其应用于图像元素,例如:

var dims = logoSize(244,127);
<Image style={[styles.logo, {width:dims.width, height:dims.height}]} source={{uri:'/path/to/image.png}} />

由于计算循环,您可能需要对样式应用resizeMode:"contain".标志在你的样式表中.

希望这能节省一些时间.

React-native相关问答推荐

如何在renderItem中显示每个项目的索引号,保持分页的前一个下一个按钮

什么是 expoClientId?

SignalR 与 React Native Expo:: 什么都没有发生

找不到变量:firebase/react native(expo)上的 IDBIndex

如何在react-native 中设置视图的自动高度

React-Native:无法从我的 android 应用程序打开设备设置

React-Native 按钮居中对齐

如何将抖动动画添加到视图(react-native)?

请求的体验使用 Expo SDK v(null),但此 Expo Client至少需要 v23.0.0版本

React Native Negative shadowOffset 创建顶部阴影

带有 xcode 模拟器的 react-native 有非常慢的alert

React Native Image 不显示,我该如何解决?

区别需要MainQueueSetup 和dispatch_get_main_queue?

在 React Native 中使用小数

React Native Build Error on IOS - typedef 用不同类型重新定义('uint8_t'(又名'unsigned char')与'enum clockid_t')

zoom 到指定的标记 react-native-maps

react-native:多色文本视图

列之间的 React Native FlatList 分隔符

从标题中的按钮导航到不同的屏幕

如何升级 react-native gradle 版本