欢迎光临
我们一直在努力

【Iced】文本

文本很可能是图形用户界面中最基础的控件。

在 iced 中有多种显示文本的方式,但最常用的方法是使用 widget 模块中的 text 辅助函数来创建 Text 控件实例。

use iced::widget::text;
use iced::{Fill, Font};

text("- 你好啊!\\n- 凯诺比将军!")
.font(Font::MONOSPACE)
.size(30) // 逻辑像素单位
.line_height(1.5) // 相对字号大小(此处实际为 45 像素)
.width(Fill)
.height(Fill)
.center()

对齐方式

Text 控件会在自身边界范围内对齐内容。

由于 Text 控件默认采用自适应尺寸策略,其边界会与内容尺寸保持一致。这意味着若未修改默认尺寸策略而直接尝试对齐文本将不会产生效果:

text("这段文字不会被居中").center()

如果我们将宽度显式设置为 Fill,就能获得预期的水平对齐效果:

use iced::Fill;

text("这段文字将水平居中")
.width(Fill)
.center()

对高度做相同设置后,就能实现双轴对齐:

use iced::Fill;

text("这段文字将居中对齐")
.width(Fill)
.height(Fill)
.center()

当然,我们也可以在固定尺寸内进行对齐:

text("这段文字将在 150×150 正方形内居中")
.width(150)
.height(150)
.center()

样式定制

Text 控件的多种方法可用于调整外观——从字体类型、字号到文本颜色。

其中 style 方法可借助应用当前的 Theme 主题来选取文本颜色:

use iced::Theme;

text("这是当前主题的主色调!")
.style(|theme: &Theme| text::Style {
color: Some(theme.palette().primary),
})

为方便使用,widget::text 模块内置了可直接用于样式的辅助函数:

text("这是警告色!")
.style(text::warning)

所有内置控件都遵循这种模式,请牢记!

text! 宏

你经常需要将动态值与静态文本组合使用 format!,例如:

let name = "Héctor"; // 假设这是动态变量

text(format!("你好,{name}!"))

text! 宏简化了这种场景。它的用法与 format! 完全相同,但返回的是 Text 控件而非字符串:

let name = "Héctor"; // 假设这是动态变量

text!("你好,{name}!")

如果已导入 iced::widget::text,就无需单独导入宏。Rust 会通过单次导入同时引入 text 函数辅助器、text 模块和 text! 宏——相当便捷!

字符串切片

Text 控件实现了 From<&str> 转换至 Element 类型。

由于大多数控件构建函数接受 Into<Element> 参数,这个实现允许你在处理字符串切片时完全省略 text() 调用:

use iced::widget::container;

// 常规写法可能是:
// container(text("冗余写法"))
//
// 但以下写法同样有效:
container("简洁又优雅!")

这种方式仅适用于使用默认文本样式的情况。若需自定义外观,仍需使用 text 辅助函数。

赞(0)
未经允许不得转载:171主机测评 » 【Iced】文本
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址