【React Native】文件翻譯閱讀紀錄 - Components(組件) - Image
Facebook Open Source React Native |
Image
React組件,用於顯示不同類型的圖像,包括網絡圖像,靜態資源,臨時本地圖像和本地磁盤中的圖像,例如相機膠卷。
此示例顯示從本地存儲中獲取和顯示圖像,以及從網絡中獲取圖像,甚至從“data:”uri方案中提供的數據。
請注意,對於網絡和數據圖像,您需要手動指定圖像的尺寸!
您還可以為圖像添加樣式:
Android 上的 GIF 和 WebP支持
在構建您自己的本機代碼時,Android上默認不支持GIF和WebP。
您需要在android / app / build.gradle中添加一些可選模塊,具體取決於您的應用程序的需求。
您需要在android / app / build.gradle中添加一些可選模塊,具體取決於您的應用程序的需求。
dependencies {
// If your app supports Android versions before Ice Cream Sandwich (API level 14)
compile 'com.facebook.fresco:animated-base-support:1.9.0'
// For animated GIF support
compile 'com.facebook.fresco:animated-gif:1.9.0'
// For WebP support, including animated WebP
compile 'com.facebook.fresco:animated-webp:1.9.0'
compile 'com.facebook.fresco:webpsupport:1.9.0'
// For WebP support, without animations
compile 'com.facebook.fresco:webpsupport:1.9.0'
}
Props
style
blurRadius
onLayout
onLoad
onLoadEnd
onLoadStart
resizeMode
source
loadingIndicatorSource
onError
testID
resizeMethod
accessibilityLabel
accessible
capInsets
defaultSource
onPartialLoad
onProgress
fadeDuration
Methods
參考
Props
style
ImageResizeMode是用於不同圖像大小調整模式的枚舉,通過Image組件上的resizeMode樣式屬性設置。值包含 contain
, cover
, stretch
, center
, repeat
.TYPE | REQUIRED |
---|---|
style | No |
borderTopRightRadius
: numberbackfaceVisibility
: enum('visible', 'hidden')borderBottomLeftRadius
: numberborderBottomRightRadius
: numberborderColor
: colorborderRadius
: numberborderTopLeftRadius
: numberbackgroundColor
: colorborderWidth
: numberopacity
: numberoverflow
: enum('visible', 'hidden')resizeMode
: Object.keys(ImageResizeMode)tintColor
: color將所有非透明像素的顏色更改為tintColor。overlayColor
: string (Android)當圖像具有圓角時,指定overlayColor將使角落中的剩餘空間填充純色。這在圓角的Android實現不支持的情況下很有用:- 某些調整大小模式,例如'包含'
- 動畫GIF
使用此道具的典型方法是將圖像顯示在純色背景上,並將overlayColor設置為與背景相同的顏色。
有關如何在幕後工作的詳細信息,請參閱 http://frescolib.org/docs/rounded-corners-and-circles.html
blurRadius
blurRadius: 添加到圖像的模糊濾鏡的模糊半徑
TYPE | REQUIRED |
---|---|
number | No |
onLayout
使用{nativeEvent:{layout:{x,y,width,height}}}調用mount和layout更改。
TYPE | REQUIRED |
---|---|
function | No |
onLoad
加載成功完成時調用。
TYPE | REQUIRED |
---|---|
function | No |
onLoadEnd
加載成功或失敗時調用。
TYPE | REQUIRED |
---|---|
function | No |
onLoadStart
在加載開始時調用。
e.g.,
onLoadStart={(e) => this.setState({loading: true})}
TYPE | REQUIRED |
---|---|
function | No |
resizeMode
確定當幀與原始圖像尺寸不匹配時如何調整圖像大小。
cover
: 均勻縮放圖像(保持圖像的縱橫比),使圖像的尺寸(寬度和高度)等於或大於視圖的相應尺寸(減去填充)。contain
: 均勻縮放圖像(保持圖像的縱橫比),使圖像的尺寸(寬度和高度)等於或小於視圖的相應尺寸(減去填充)。stretch
: 獨立縮放寬度和高度,這可能會改變src的寬高比。repeat
: 重複圖像以覆蓋視圖的框架。圖像將保持其大小和縱橫比,除非它大於視圖,在這種情況下,它將被均勻縮小以使其包含在視圖中。center
: 沿著兩個維度在圖像中居中。如果圖像大於視圖,請將其均勻縮小以使其包含在視圖中。
TYPE | REQUIRED |
---|---|
enum('cover', 'contain', 'stretch', 'repeat', 'center') | No |
source
圖像源(遠程URL或本地文件資源)。
此prop還可以包含多個遠程URL,與其寬度和高度一起指定,並且可能包含scale / other URI參數。然後,本機側將根據圖像容器的測量尺寸選擇要顯示的最佳uri。可以添加緩存屬性以控制聯網請求與本地緩存的交互方式。
目前支持的格式是
png
, jpg
, jpeg
, bmp
, gif
, webp
(Android only), psd
(iOS only).TYPE | REQUIRED |
---|---|
ImageSourcePropType | No |
loadingIndicatorSource
與source類似,此屬性表示用於呈現圖像的加載指示符的資源,在圖像準備好顯示之前顯示,通常在從網絡下載之後顯示。
TYPE | REQUIRED |
---|---|
array of ImageSourcePropTypes, number | No |
可以接受返回的數字require('./image.jpg')
onError
使用{nativeEvent:{error}}調用加載錯誤。
TYPE | REQUIRED |
---|---|
function | No |
testID
UI自動化測試腳本中使用的此元素的唯一標識符。
TYPE | REQUIRED |
---|---|
string | No |
resizeMethod
當圖像的尺寸與圖像視圖的尺寸不同時,應該用於調整圖像大小的機制。默認為
auto
.auto
: 使用啟發式方法在調整大小和縮放之間進行選擇。resize
: 一種軟件操作,在解碼之前更改內存中的編碼圖像。當圖像比視圖大得多時,應該使用它來代替比例。scale
: 縮小或放大圖像。與調整大小相比,縮放更快(通常是硬件加速)並產生更高質量的圖像。如果圖像小於視圖,則應使用此選項。如果圖像略大於視圖,也應該使用它。
TYPE | REQUIRED | PLATFORM |
---|---|---|
enum('auto', 'resize', 'scale') | No | Android |
accessibilityLabel
當用戶與圖像交互時屏幕閱讀器讀取的文本。
TYPE | REQUIRED | PLATFORM |
---|---|---|
node | No | iOS |
accessible
如果為true,則表示圖像是可訪問性元素。
TYPE | REQUIRED | PLATFORM |
---|---|---|
bool | No | iOS |
capInsets
調整圖像大小時,capInsets指定大小的角將保持固定大小,但圖像的中心內容和邊框將被拉伸。這對於創建可調整大小的圓角按鈕,陰影和其他可調整大小的資源非常有用。有關Apple官方文檔的更多信息。 official Apple documentation.
TYPE | REQUIRED | PLATFORM |
---|---|---|
object: {top: number, left: number, bottom: number, right: number} | No | iOS |
defaultSource
加載圖像源時顯示的靜態圖像。
TYPE | REQUIRED | PLATFORM |
---|---|---|
object, number | No | iOS |
-------------- | -------- | -------- |
number | No | Android |
如果傳遞一個對象,則一般形狀為
{uri: string, width: number, height: number, scale: number}
:uri
-表示圖像資源標識符的字符串,應該是本地文件路徑或靜態圖像資源的名稱(應包含在require('./path/to/image.png')
函數中) )。width
,height
- 如果在構建時已知,則可以指定,在這種情況下,這些將用於設置默認的<Image />組件尺寸。scale
- 用於指示圖像的比例因子。如果未指定,則默認為1.0,這意味著一個圖像像素等於一個顯示點/ DIP。
如果傳遞數字:
number
- 由require('。/ image.jpg')返回的不透明類型。
Android: 它僅適用於發布版本,如果在DEBUG版本中沒有顯示任何內容,請不要擔心
onPartialLoad
在圖像的部分加載完成時調用。構成“部分負載”的定義是特定於加載器的,但這適用於漸進式JPEG負載。
TYPE | REQUIRED | PLATFORM |
---|---|---|
function | No | iOS |
onProgress
使用
{nativeEvent: {loaded, total}}
調用下載進度。TYPE | REQUIRED | PLATFORM |
---|---|---|
function | No | iOS |
fadeDuration
僅適用於Android。默認情況下,它是300毫秒。
TYPE | REQUIRED | PLATFORM |
---|---|---|
number | No | Android |
Methods
getSize()
Image.getSize(uri, success, [failure]);
在顯示圖像之前檢索圖像的寬度和高度(以像素為單位)。如果無法找到圖像或無法下載,則此方法可能會失敗。
為了檢索圖像尺寸,可能首先需要加載或下載圖像,之後將對其進行高速緩存。這意味著原則上您可以使用此方法預加載圖像,但是它沒有針對該目的進行優化,並且將來可能以不完全加載/下載圖像數據的方式實現。預先加載圖像的正確支持方式將作為單獨的API提供。
不適用於靜態圖像資源。
為了檢索圖像尺寸,可能首先需要加載或下載圖像,之後將對其進行高速緩存。這意味著原則上您可以使用此方法預加載圖像,但是它沒有針對該目的進行優化,並且將來可能以不完全加載/下載圖像數據的方式實現。預先加載圖像的正確支持方式將作為單獨的API提供。
不適用於靜態圖像資源。
參數:
NAME | TYPE | REQUIRED | DESCRIPTION |
---|---|---|---|
uri | string | Yes | 圖像的位置。 |
success | function | Yes | 成功找到圖像並檢索寬度和高度時將調用的函數。 |
failure | function | No | 如果出現錯誤(例如無法檢索圖像),將調用的函數。 |
prefetch()
Image.prefetch(url);
通過將遠程映像下載到磁盤緩存中來預取遠程映像以供以後使用
參數:
NAME | TYPE | REQUIRED | DESCRIPTION |
---|---|---|---|
url | string | Yes | 圖像的遠程位置。 |
abortPrefetch()
Image.abortPrefetch(requestId);
中止預取請求。Android的唯一。
參數:
NAME | TYPE | REQUIRED | DESCRIPTION |
---|---|---|---|
requestId | number | Yes | prefetch返回的Id() |
queryCache()
Image.queryCache(urls);
執行緩存查詢。 返回從URL到緩存狀態的映射,例如“disk”或“memory”。 如果請求的URL不在映射中,則表示它不在緩存中。
參數:
NAME | TYPE | REQUIRED | DESCRIPTION |
---|---|---|---|
urls | array | Yes | 要檢查緩存的圖像URL列表。 |
resolveAssetSource()
Image.resolveAssetSource(source);
將資產引用解析為具有uri,width和height屬性的對象。
參數:
NAME | TYPE | REQUIRED | DESCRIPTION |
---|---|---|---|
source | number, object | Yes | 一個數字(require('。/ foo.png')返回的opaque類型)或ImageSource。 |
ImageSource是一個像{uri:'<http location ||的對象 文件路徑>'}
0 意見