Reference version

文本

一个用于显示样式化文本并支持嵌套文本的 SwiftUI Text 组件。

iOS
tvOS
Bundled version:
~55.0.0-beta.0

For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.

Expo UI Text 与官方 SwiftUI Text API 保持一致。

安装

Terminal
npx expo install @expo/ui

If you are installing this in an existing React Native app, make sure to install expo in your project.

用法

基本文本

BasicTextExample.tsx
import { Host, Text } from '@expo/ui/swift-ui'; export default function BasicTextExample() { return ( <Host matchContents> <Text>你好,世界</Text> </Host> ); }

带修饰符的文本

使用修饰符来设置整段文本的样式。

StyledTextExample.tsx
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 的修饰符(例如 bolditalicfontforegroundColor,以及带颜色的 foregroundStyle)才会应用到嵌套片段上。

NestedTextExample.tsx
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> ); }

混合行内样式

组合多个带样式的片段以实现富文本格式。

MixedStylesExample.tsx
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 修饰符应用不同的字体粗细。

FontWeightsExample.tsx
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 修饰符应用不同的字体设计。

FontDesignsExample.tsx
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 库加载自定义字体。

CustomFontExample.tsx
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 粗体</Text> <Text modifiers={[font({ family: 'Inter-Regular', size: 18 })]}>Inter 常规</Text> </VStack> </Host> ); }

带行数限制的文本

使用 lineLimit 修饰符在达到指定行数后截断文本。

LineLimitExample.tsx
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 格式。

MarkdownTextExample.tsx
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 Docs](https://docs.expo.dev/versions/latest/sdk/ui/) 以了解更多关于 Expo UI 的信息 </Text> </VStack> </Host> ); }

API

import { Text } from '@expo/ui/swift-ui';

Component

Text

iOS
tvOS

Type: React.Element<TextProps>

TextProps

children

iOS
tvOS
Optional • Type: ReactNode

Text content or nested Text components.

markdownEnabled

iOS
tvOS
Optional • Type: boolean

Enables Markdown formatting for the text content using SwiftUI LocalizedStringKey.