图像
用于显示 SF Symbols 的 SwiftUI 图像组件。
For the complete documentation index, see llms.txt. Use this file to discover all available pages.
如需跨平台使用,请参阅通用的图标— 它会根据平台渲染相应的原生组件。
Expo UI Image 使用 SwiftUI Image API 显示 SF Symbols。SF Symbols 是 Apple 提供的一个可配置符号库。

安装
- npx expo install @expo/uiIf you are installing this in an existing React Native app, make sure to install expo in your project.
用法
基本 SF Symbol
import { Host, Image } from '@expo/ui/swift-ui'; export default function BasicImageExample() { return ( <Host matchContents> <Image systemName="star.fill" /> </Host> ); }
自定义 SF Symbol
使用 assetName 属性来显示一个作为符号集导入到应用资源目录中的自定义 SF Symbol。
import { Host, Image } from '@expo/ui/swift-ui'; export default function CustomImageExample() { return ( <Host matchContents> <Image assetName="acme.mark" /> </Host> ); }
使用尺寸和颜色
import { Host, HStack, Image } from '@expo/ui/swift-ui'; export default function ImageSizeColorExample() { return ( <Host matchContents> <HStack spacing={16}> <Image systemName="heart.fill" size={24} color="red" /> <Image systemName="star.fill" size={32} color="orange" /> <Image systemName="bell.fill" size={40} color="blue" /> </HStack> </Host> ); }
带变量值
某些 SF Symbols 会根据变量值改变其外观。使用 variableValue 属性,传入介于 0.0 和 1.0 之间的值即可控制渲染出的符号。需要 iOS 16.0+ 和 SF Symbols 4.0+。
import { Host, HStack, Image } from '@expo/ui/swift-ui'; export default function ImageVariableExample() { return ( <Host matchContents> <HStack spacing={16}> <Image systemName="chart.bar.fill" size={32} variableValue={0.3} /> <Image systemName="chart.bar.fill" size={32} variableValue={0.6} /> <Image systemName="chart.bar.fill" size={32} variableValue={1.0} /> </HStack> </Host> ); }
使用符号效果
通过传入来自 @expo/ui/swift-ui/modifiers 的 symbolEffect 修饰符,可以为 SF Symbol 添加动画效果。此效果默认会持续运行。你也可以传入 value 作为离散触发器,使其在每次变化时触发一次;或者传入 isActive 作为布尔开关,在其为 true 时运行效果。需要 iOS 17.0 及更高版本。
import { Host, Image } from '@expo/ui/swift-ui'; import { symbolEffect } from '@expo/ui/swift-ui/modifiers'; export default function ImageSymbolEffectExample() { return ( <Host matchContents> <Image systemName="wifi" size={48} color="blue" modifiers={[ symbolEffect({ effect: 'variableColor', fillStyle: 'iterative', playbackStyle: 'reversing', }), ]} /> </Host> ); }
下面的示例使用 value 在每次按下按钮时播放 bounce。要触发该效果,请从 worklet 中向 state.value 写入(或通过 scheduleOnUI)。
import { Button, Host, Image, useNativeState, VStack } from '@expo/ui/swift-ui'; import { symbolEffect } from '@expo/ui/swift-ui/modifiers'; import { scheduleOnUI } from 'react-native-worklets'; export default function ImageSymbolEffectValueExample() { const trigger = useNativeState(0); return ( <Host matchContents> <VStack spacing={16}> <Image systemName="bell.fill" size={48} color="orange" modifiers={[symbolEffect({ effect: 'bounce', direction: 'up' }, { value: trigger })]} /> <Button label="弹跳" onPress={() => scheduleOnUI(() => { 'worklet'; trigger.value = trigger.value + 1; }) } /> </VStack> </Host> ); }
下面的示例使用 isActive 来切换持续的 breathe 动画。
import { Host, Image, SyncToggle, useNativeState, VStack } from '@expo/ui/swift-ui'; import { symbolEffect } from '@expo/ui/swift-ui/modifiers'; export default function ImageSymbolEffectIsActiveExample() { const isActive = useNativeState(true); return ( <Host matchContents> <VStack spacing={16}> <Image systemName="cloud.fill" size={48} color="cyan" modifiers={[symbolEffect({ effect: 'breathe' }, { isActive })]} /> <SyncToggle label="呼吸" isOn={isActive} /> </VStack> </Host> ); }
API
import { Image } from '@expo/ui/swift-ui';
Component
Type: React.Element<ImageProps>
stringThe asset catalog name of a custom SF Symbol imported as a symbol set.
ColorValueThe color of the system image. Can be a color name like '#ff00ff', 'red', 'blue', etc.
SFSymbols7_0The name of the system image (SF Symbol). For example: 'photo', 'heart.fill', 'star.circle'
stringThe URI of the local image file to display. For example: 'file:///path/to/image.jpg' Performs a synchronous read operation that blocks the main thread.
numberThe variable value that alters the symbol's appearance. A number between 0.0 and 1.0. Only works with SF Symbols that support variable values (SF Symbols 4.0+).