react native fast shadow
v0.1.1
快速,高質量的Android陰影,用於React Native
React天然僅通過高程道具支持Android上的陰影,但是實現所需效果通常是不可能的,因為它只有很少的預設。已經創建了第三方庫來規避這一點,但是當在許多視圖上使用時,它們可以使您的應用程序較慢或顯著增加其內存消耗。
<View>
組件的置換式替換shadowRadius
, shadowColor
, shadowOpacity
和shadowOffset
<ShadowedView>
只是<View>
的別名npm install react-native-fast-shadow
# or
yarn add react-native-fast-shadow
用法:
import { ShadowedView } from 'react-native-fast-shadow' ;
< ShadowedView
style = { {
shadowOpacity : 0.4 ,
shadowRadius : 12 ,
shadowOffset : {
width : 5 ,
height : 3 ,
} ,
} }
>
< Image source = { require ( './kitten.png' ) } style = { { borderRadius : 30 } } / >
< / ShadowedView >
ShadowStyle():
shadowStyle()
實用程序也可以用來使創建陰影樣式和保持陰影一致的濃度平台變得更加容易。它將創建與上述相同的style
道具,但在iOS上將陰影半徑除以2(由於某些原因,與設計工具或CSS的盒子遮陽相比,iOS陰影太大了2倍):
import { ShadowedView , shadowStyle } from 'react-native-fast-shadow' ;
< ShadowedView
style = { shadowStyle ( {
opacity : 0.4 ,
radius : 12 ,
offset : [ 5 , 3 ] ,
} ) }
>
< Image source = { require ( './kitten.png' ) } style = { { borderRadius : 30 } } / >
< / ShadowedView >
在Android上,使用以下過程生成陰影可抽籤(有關更多詳細信息,請參見Shadowfactory.java):
shadowRadius
的畫布shadowColor
/ shadowOpacity
,並根據shadowOffset
被取代NinePatch -Drawable如何工作(注意調整可繪製時未將角的劃分):
反應本地 - 福斯特陰影具有以下局限性:
<View>
實現不同, <ShadowedView>
無法與自由圖視圖一起使用。它預計其直接的後代視圖將是一個圓形的矩形(圓形)。解決方案:對於陰影<Text>
元素,您可以使用TextShadowradius。對於復雜的形狀,反應本地 - 安德羅是您的最佳選擇。<ShadowedView>
及其孩子的大小相同,否則陰影將大於內容(您可以將其想到<ShadowedView>
作為視圖帶有背景顏色)。<ShadowedView>
的樣式或其直接孩子的樣式來推斷拐角半徑以應用。如果您的視圖層次結構更為複雜,則可能無法正確推斷Corner Radii。解決方案:重新設計您的視圖層次結構或將borderRadius
直接傳遞到<ShadowedView>
的style
道具。下表比較了在帶有12pt radius陰影的像素2上渲染150x200pt <Image>
時,比較了react-native-fast-shadow
,反應 - 本元和反應形式-Shadow-2的記憶消耗。該應用程序是使用調試版本和愛馬仕(Hermes)構建的。
沒有陰影 | 反應源-Shadow-2 | 反應本地 - 安德羅 | 反應本地福斯特陰影 |
---|---|---|---|
117MB(參考) | 430MB (+313MB) | 403MB (+286MB) | 123MB (+6MB) |