文本
一个用于显示样式化文本并支持嵌套文本的 SwiftUI Text 组件。
iOS
tvOS
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/uiIf 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的修饰符(例如bold、italic、font、foregroundColor,以及带颜色的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
Type: React.Element<TextProps>