文本
一个用于显示样式化文本的 SwiftUI Text 组件,支持嵌套文本。
For the complete documentation index, see llms.txt. Use this file to discover all available pages.
有关跨平台使用,请参阅通用的Text—— 它会根据平台渲染相应的原生组件。
Expo UI Text 与官方 SwiftUI Text API 保持一致。

安装
- npx expo install @expo/uiIf you are installing this in an existing React Native app, make sure to install expo in your project.
用法
基本文本
import { Host, Text } from '@expo/ui/swift-ui'; export default function BasicTextExample() { return ( <Host matchContents> <Text>你好,世界</Text> </Host> ); }
带修饰符的文本
使用修饰符来设置整个文本的样式。
import { Host, Text } from '@expo/ui/swift-ui'; import { font, foregroundStyle } from '@expo/ui/swift-ui/modifiers'; export default function StyledTextExample() { return ( <Host matchContents> <Text modifiers={[font({ size: 24, weight: 'bold' }), foregroundStyle('blue')]}> 大号粗体蓝色文本 </Text> </Host> ); }
嵌套文本(按片段样式)
嵌套 Text 组件可以为不同片段设置不同样式。这对于行内格式化非常有用,例如在句子中对加粗或有颜色的词进行设置。
注意: 嵌套文本使用 SwiftUI 的 Text 连接,因此只有返回
Text的修饰符(例如bold、italic、font、foregroundColor以及带颜色的foregroundStyle)才会应用于嵌套片段。
import { Host, Text } from '@expo/ui/swift-ui'; import { bold, italic, foregroundStyle } from '@expo/ui/swift-ui/modifiers'; export default function NestedTextExample() { return ( <Host matchContents> <Text> 你好 <Text modifiers={[bold(), foregroundStyle('red')]}>世界</Text>! </Text> </Host> ); }
混合行内样式
组合多个带样式的片段以实现富文本格式化。
import { Host, Text } from '@expo/ui/swift-ui'; import { bold, italic, foregroundStyle, font } from '@expo/ui/swift-ui/modifiers'; export default function MixedStylesExample() { return ( <Host matchContents> <Text> 这是 <Text modifiers={[bold()]}>粗体</Text>、<Text modifiers={[italic()]}>斜体</Text>, 以及 <Text modifiers={[foregroundStyle('orange')]}>彩色</Text> 文本。 </Text> </Host> ); }
字体字重
使用 font 修饰符应用不同的字体字重。
import { Host, Text, VStack } from '@expo/ui/swift-ui'; import { font } from '@expo/ui/swift-ui/modifiers'; export default function FontWeightsExample() { return ( <Host matchContents> <VStack spacing={4}> <Text modifiers={[font({ weight: 'ultraLight' })]}>超轻</Text> <Text modifiers={[font({ weight: 'light' })]}>轻</Text> <Text modifiers={[font({ weight: 'regular' })]}>常规</Text> <Text modifiers={[font({ weight: 'medium' })]}>中等</Text> <Text modifiers={[font({ weight: 'semibold' })]}>半粗体</Text> <Text modifiers={[font({ weight: 'bold' })]}>粗体</Text> <Text modifiers={[font({ weight: 'heavy' })]}>重</Text> <Text modifiers={[font({ weight: 'black' })]}>黑体</Text> </VStack> </Host> ); }
字体设计
使用 font 修饰符应用不同的字体设计。
import { Host, Text, VStack } from '@expo/ui/swift-ui'; import { font } from '@expo/ui/swift-ui/modifiers'; export default function FontDesignsExample() { return ( <Host matchContents> <VStack spacing={4}> <Text modifiers={[font({ design: 'default', size: 18 })]}>默认设计</Text> <Text modifiers={[font({ design: 'rounded', size: 18 })]}>圆角设计</Text> <Text modifiers={[font({ design: 'serif', size: 18 })]}>衬线设计</Text> <Text modifiers={[font({ design: 'monospaced', size: 18 })]}>等宽设计</Text> </VStack> </Host> ); }
自定义字体
使用带有 family 参数的 font 修饰符来使用自定义字体。你可以使用 expo-font 库加载自定义字体。
import { Host, Text, VStack } from '@expo/ui/swift-ui'; import { font } from '@expo/ui/swift-ui/modifiers'; export default function CustomFontExample() { return ( <Host matchContents> <VStack spacing={4}> <Text modifiers={[font({ family: 'Inter-Bold', size: 18 })]}>Inter Bold</Text> <Text modifiers={[font({ family: 'Inter-Regular', size: 18 })]}>Inter Regular</Text> </VStack> </Host> ); }
带行数限制的文本
使用 lineLimit 修饰符在达到一定行数后截断文本。
import { Host, Text } from '@expo/ui/swift-ui'; import { lineLimit } from '@expo/ui/swift-ui/modifiers'; export default function LineLimitExample() { const longText = '这是一段非常长的文本,将在两行之后被截断。 '.repeat(5); return ( <Host matchContents> <Text modifiers={[lineLimit(2)]}>{longText}</Text> </Host> ); }
Markdown
使用 markdownEnabled 属性为文本内容启用 Markdown 格式。
import { Host, Text, VStack } from '@expo/ui/swift-ui'; export default function MarkdownTextExample() { return ( <Host matchContents> <VStack spacing={4}> <Text markdownEnabled>普通文本。</Text> <Text markdownEnabled> 这是 **粗体文本**、*斜体文本* 和 ***同时加粗和斜体的文本***。 </Text> <Text markdownEnabled>~~删除线文本~~</Text> <Text markdownEnabled>`这是等宽文本`</Text> <Text markdownEnabled> 访问 [Expo 文档](https://docs.expo.dev/versions/latest/sdk/ui/) 以了解更多关于 Expo UI 的信息 </Text> </VStack> </Host> ); }
自动更新日期
使用 date 和 dateStyle 属性来显示会随着时间推移自动更新的日期。这在小组件和 Live Activities 中尤其有用。
import { Host, Text } from '@expo/ui/swift-ui'; export default function DateTextExample() { return ( <Host matchContents> <Text date={new Date(Date.now() + 300000)} dateStyle="timer" /> </Host> ); }
计时器间隔
使用 timerInterval 显示实时倒计时或正计时器。这需要 iOS/tvOS 16+。
import { Host, Text } from '@expo/ui/swift-ui'; export default function TimerIntervalExample() { return ( <Host matchContents> <Text timerInterval={{ lower: new Date(), upper: new Date(Date.now() + 600000) }} countsDown /> </Host> ); }
注意:
timerInterval、countsDown和pauseTime需要 iOS 16.0+ / tvOS 16.0+。在较旧版本上,计时器间隔将不会渲染。
API
import { Text } from '@expo/ui/swift-ui';
Component
Type: React.Element<TextProps>
boolean • Default: trueWhether the timer counts down (true) or up (false).
DateA date to display using the specified dateStyle. The text auto-updates as time passes.
TextDateStyle • Default: 'date'The style used to format the date prop.
booleanEnables Markdown formatting for the text content using SwiftUI LocalizedStringKey.
ClosedRangeDateA time interval to display as a live-updating timer.