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) |