ReactNative之Image组件自适应高度,图片自适应大小

因为在现在0.50包括之前的ReactNative版本,Image组件必须要设置宽高才能显示。所以在图片宽高不确定的情况下,如何来让图片自适应
屏幕高度呢?

需求原因:因为做商城详情页面的图片长短不一,所以要自适应图片显示高度。这个需求就产生了。


以下方法:

getSize方法 传入imageUri(图片的uri路径,支持本地和网络路径)

Image.getSize(imageUri,(width,height) => {
    //width 图片的宽度
    //height 图片的高度
}
返回的是图片的宽高。之后根据自己手机屏幕自己计算图片的
宽度高度

算法:

1.首先获取手机屏幕宽高

let screenWidth = Dimensions.get('window').width;
let screenHeight = Dimensions.get('window').height;

2.获取网络图片宽高

Image.getSize(imageUri,(width,height) => {
    //width 图片的宽度
    //height 图片的高度
}

3.

算法一:

图片宽度(÷)手机屏幕宽度 = 图片和手机宽度之比。

图片高度(÷)  图片和手机宽度之比 = 图片应在手机上显示的高度。

注:如果图片宽度小于手机屏幕,有极大可能会让图片失真,这样的话应当增加判断(请自行编码)。

算法二:

宽度是要适配全屏的,所以要设置图片的大小,宽度就等于手机屏幕宽度,那么高度

显示高度 = Math.floor( 屏幕宽度(÷)(图片的宽 * 图片的高));

//方法一代码:
Image.getSize(imageUri,(width,height) => {
    //width 图片的宽度 Math.floor向下取整
    //height 图片的高度
    let proportion = width/screenWidth;
    let myHeight = height/screenHeight;
}
//方法二代码:
Image.getSize(imageUri,(width,height) => {
    //width 图片的宽度
    //height 图片的高度
    let myHeight = Math.floor(screenWidth/width*height);
}

注:防止小数点后出现过多小数位数,这里特别用Math.floor进行js小数返回向下取整的整数。

向下取整:

Math.floor(XXX)

XXX = 1.8

Math.floor(XXX)的值就是1

XXX = 1.2

Math.floor(XXX)的值就是1

至此,把图片Image组件的宽高设置成自定义的宽高就ok了。





  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值