1. 程式人生 > >ReactNative之Image元件自適應高度,圖片自適應大小

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了。

相關推薦

ReactNativeImage元件適應高度圖片適應大小

因為在現在0.50包括之前的ReactNative版本,Image元件必須要設定寬高才能顯示。所以在圖片寬高不確定的情況下,如何來讓圖片自適應螢幕高度呢?需求原因:因為做商城詳情頁面的圖片長短不一,所以要自適應圖片顯示高度。這個需求就產生了。以下方法:getSize方法 傳入

ScrollView巢狀ViewPager適應高度圖片高度小的會顯示空白

最近專案中遇到ScrollView巢狀ViewPager,ViewPager中存放的是ImagView,要求是,ImagView高度不定,接下來就是各種方法嘗試,比較普遍的方式就是自定義一個viewpager。程式碼如下: import android.content.C

iframe適應高度以及一個頁面加載多個iframe

nload 自適應 ntb new 一個 type set var con <iframe id="iframepage" src="Index.html" name="iframepage" frameborder="0" width="1349" scroll

【css】子元素浮動到了父元素外父元素沒有隨子元素適應高度如何解決?

正常情況 如果子元素沒有設定浮動(float),父元素的高度會隨著子元素高度的改變而改變的。 設定浮動以後 父元素的高度不會隨著子元素的高度而變化。 例如:在一個ul中定義若干個li,並設定float='left' <!DOCTYPE html> <html lang="en"&g

layer彈出層適應高度垂直水平居中

1、高度自適應:success: function(layero, index) {        layer.iframeAuto(index);    },2、layer垂直居中進入layer.js,增加幾行程式碼。具體如圖:

[置頂] RecyclerView實現瀑布流圖片適應高度

話不多說,先上效果圖 對於RecyclerView,相信大家都不陌生了,這個集listView,GridView,瀑布流效果與一身強大控制元件,漸漸地滲透在每個App.... 還是回到正題,如何讓RecyclerView裡的圖片自適應高度? 我們知道,要讓RecyclerView有瀑布流效果,R

iframe 適應高度更改內容時iframe高度怎麼根據新的內容高度自動改變

//code from http://caibaojian.com/iframe-adjust-content-height.html <iframe src="backtop.html" fr

手機移動網站適應高度手機網頁圖片適應大小

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 如果寬要全部顯示,就設定為width:100%,height:auto,反之就設定為width:auto, height:100%

RecyclerView實現瀑布流圖片適應高度

話不多說,先上效果圖 對於RecyclerView,相信大家都不陌生了,這個集listView,GridView,瀑布流效果與一身強大控制元件,漸漸地滲透在每個App.... 還是回到正題,如何讓RecyclerView裡的圖片自適應高度? 我們知道,要讓Recycler

【React Native開發】React Native控制元件Image元件講解與美團首頁頂部效果例項(10)

轉載請標明出處:(一)前言        【好訊息】個人網站已經上線執行,後面部落格以及技術乾貨等精彩文章會同步更新,請大家關注收藏:http://www.lcode.org      今天我們一起來看一下Image元件的相關使用講解以及模仿實現一下美團首頁頂部分類的效果。具體環境搭建以及相關配置的請檢視之前

ReactNativeImage元件載入方式

Image元件載入方式 從當前專案中載入 圖片資原始檔的查詢和JS模組相似,會根據填寫的圖片路徑相對於當前的js檔案路徑進行搜尋。 React Naive的Packager會根據平臺選擇相應的檔案,例如:my_icon.ios.png和my_icon.

React Native Image 元件

1.載入網路圖片 render() { return ( <View style={styles.container} > <Image source={{uri: 'https://facebook.

React Native 學習Image元件

/** * @Author: fantasy * @Date:   2016-06-13T17:27:21+08:00 * @Last modified by:   fantasy * @Last modified time: 2016-07-11T10:45:42+08:

自己實現的資料表格控制元件(dataTable)支援定義樣式和標題資料、ajax等各種定義設定以及分頁定義

一、前言 也沒什麼好說的嘛,用了蠻多github上開源的能夠實現dataTable功能的表格外掛,不過都預設繫結樣式啊,資料格式也設定的比較死,所以忍不住自己實現了一個簡單的可自定義樣式和自定義資料返回格式的資料表格外掛,原生js是保留的,後面如果更新新版本的話會去除對jq

微信小程式 image元件的mode屬性 以及 圖片出現橫向滾動軸

微信在3月27釋出新增的六大能力中開放申請個人開發者啦!!因為公司也要做小程式,現在趁著專案在客戶那邊還沒確定,於是自己搞了一個pixiv(也就是P站)的app(這個app名字就叫做pixiv)轉成微

axis2使用教程、webservices定義引數webservices定義返回值

Java Axis2 1.6.2使用說明 下載axis 下載最新的axis2jar包以及配置檔案。下載地址: 貌似需要翻牆。我用的是火狐外掛翻牆的。絕體步驟你不懂得可以百度一下吧。 配置axis2 首先你的需要安裝好一個tomcat。版本這個用6、7都可以。至於

通過c# 實現定義屬性改變觸發定義事件 理解定義事件及其觸發過程

以下說明可解釋自定義的事件的自定義觸發過程: 直接上程式碼,內含說明(介面是兩個文字框textbox1,textbox2,和一個button1,介面的Load事件,button的click事件) Form1 類(呼叫者端) using System; using

vue中使用vue-quill-editor富文字編輯器定義toolbar圖片上傳到七牛

一、npm 安裝 vue-quill-editor  二、在main.js中引入 import VueQuillEditor from 'vue-quill-editor' // require styles 引入樣式 import 'quill/dist/quill.c

c模擬記憶體分配演算法(首次適應演算法最佳適應演算法最壞適應演算法)

#include<bits/stdc++.h> using namespace std; /*定義記憶體的大小為100*/ #define MEMSIZE 100 /*如果小於此值,將不再分割記憶體*/ #define MINSIZE 2 /*記憶體分割槽空間表結構*/ typedef str

MySql建立定義函式使用使用者定義變數完成增長

當前session存續時,持續自增,當前session斷開時,從1開始自增。DROP FUNCTION IF EXISTS increaseSeq ;DELIMITER //CREATE FUNCTION increaseSeq() RETURNS INTEGERDETERM