文本
一个 SwiftUI 文本组件,用于显示带样式的文本,并支持嵌套文本。
Expo UI 文本与官方 SwiftUI Text API 相匹配。
🌐 Expo UI Text matches the official SwiftUI Text API.
安装
🌐 Installation
- npx expo install @expo/uiIf you are installing this in an existing React Native app, make sure to install expo in your project.
用法
🌐 Usage
基础文本
🌐 Basic text
import { Host, Text } from '@expo/ui/swift-ui'; export default function BasicTextExample() { return ( <Host matchContents> <Text>Hello world</Text> </Host> ); }
带有修饰符的文本
🌐 Text with modifiers
使用修饰符来为整个文本设置样式。
🌐 Use modifiers to style the entire text.
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')]}> Large Bold Blue Text </Text> </Host> ); }
嵌套文本(每段样式)
🌐 Nested text (per-segment styling)
嵌套 Text 组件以对单独的片段进行不同的样式设置。这对于内联格式很有用,例如句子中的加粗或彩色单词。
🌐 Nest Text components to style individual segments differently. This is useful for inline formatting, such as bold or colored words within a sentence.
注意: 嵌套文本使用 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> Hello <Text modifiers={[bold(), foregroundStyle('red')]}>world</Text>! </Text> </Host> ); }
混合内联样式
🌐 Mixed inline styles
将多个样式段组合以实现丰富的文本格式
🌐 Combine multiple styled segments for rich text formatting.
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> This is <Text modifiers={[bold()]}>bold</Text>, <Text modifiers={[italic()]}>italic</Text>, and <Text modifiers={[foregroundStyle('orange')]}>colored</Text> text. </Text> </Host> ); }
字体粗细
🌐 Font weights
使用 font 修饰符来应用不同的字体粗细。
🌐 Use the font modifier to apply different font weights.
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' })]}>Ultra Light</Text> <Text modifiers={[font({ weight: 'light' })]}>Light</Text> <Text modifiers={[font({ weight: 'regular' })]}>Regular</Text> <Text modifiers={[font({ weight: 'medium' })]}>Medium</Text> <Text modifiers={[font({ weight: 'semibold' })]}>Semibold</Text> <Text modifiers={[font({ weight: 'bold' })]}>Bold</Text> <Text modifiers={[font({ weight: 'heavy' })]}>Heavy</Text> <Text modifiers={[font({ weight: 'black' })]}>Black</Text> </VStack> </Host> ); }
字体设计
🌐 Font designs
使用 font 修饰符来应用不同的字体设计。
🌐 Use the font modifier to apply different font designs.
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 })]}>Default Design</Text> <Text modifiers={[font({ design: 'rounded', size: 18 })]}>Rounded Design</Text> <Text modifiers={[font({ design: 'serif', size: 18 })]}>Serif Design</Text> <Text modifiers={[font({ design: 'monospaced', size: 18 })]}>Monospaced Design</Text> </VStack> </Host> ); }
自定义字体
🌐 Custom fonts
使用带有 family 参数的 font 修饰符来使用自定义字体。你可以使用 expo-font 库加载自定义字体。
🌐 Use the font modifier with a family parameter to use custom fonts. You can load custom fonts using expo-font library.
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> ); }
有行数限制的文本
🌐 Text with line limit
使用 lineLimit 修饰符在达到一定行数后截断文本。
🌐 Use the lineLimit modifier to truncate text after a certain number of lines.
import { Host, Text } from '@expo/ui/swift-ui'; import { lineLimit } from '@expo/ui/swift-ui/modifiers'; export default function LineLimitExample() { const longText = 'This is a very long text that will be truncated after two lines. '.repeat(5); return ( <Host matchContents> <Text modifiers={[lineLimit(2)]}>{longText}</Text> </Host> ); }
Markdown
使用 markdownEnabled 属性来启用文本内容的 Markdown 格式化。
🌐 Use the markdownEnabled property to enable Markdown formatting for the text content.
import { Host, Text, VStack } from '@expo/ui/swift-ui'; export default function MarkdownTextExample() { return ( <Host matchContents> <VStack spacing={4}> <Text markdownEnabled>Regular text.</Text> <Text markdownEnabled> This is **bold text**, *italic text* and ***text in both bold and italic***. </Text> <Text markdownEnabled>~~Strikethrough text~~</Text> <Text markdownEnabled>`This is monospaced text`</Text> <Text markdownEnabled> Visit the [Expo Docs](https://expo.nodejs.cn/versions/latest/sdk/ui/) to learn more about Expo UI </Text> </VStack> </Host> ); }
应用接口
🌐 API
import { Text } from '@expo/ui/swift-ui';
Component
Type: React.Element<TextProps>