UIKits readableContentGuide 为每个 SwiftUI View 提供,以 ViewModifier 的形式呈现
在单列中显示多行文本可能会使文本难以阅读,并且容易迷失行踪 - 尤其是在屏幕宽度较大的设备上,例如 iPad。
在 iOS 9.0 中,Apple 引入了 readableContentGuide - 一种布局指南,表示视图内具有可读宽度的区域。
遵循此布局指南的 UI 组件会自动调整其宽度,从而提供更好的阅读体验,同时考虑到屏幕尺寸、方向、多任务处理,甚至动态类型大小。
由于 readableContentGuide 是 UIKit 的一部分,因此在 SwiftUI 中没有直接的替代方案。 替代解决方案,例如根据水平尺寸类应用更大的内边距,没有考虑到屏幕尺寸、动态类型大小等各种组合。
ReadabilityModifier 提供了一个简单的 ViewModifier,它将 UIKit 的 readableContentGuide 的原始行为移植到应用它的每个 SwiftUI View - 通过设置视图的宽度或添加水平内边距。
在任何 SwiftUI View 上应用 .fitToReadableContentGuide() 以添加水平内边距,将视图放置在 readableContentGuide 内。
var body: some View {
VStack {
Text("This text could be waaaaay longer...")
.fitToReadableContentGuide()
}
}
您可以添加额外的间距,该间距将添加到 readableContentGuide 之上。
Text("This text needs some more room")
.fitToReadableContentGuide(extraSpacing: 20)
尊重 readableContentGuide 的默认方式是在视图中添加水平内边距。在某些情况下,例如当视图已放置在已具有内边距的 VStack 中时,此内边距将累加并使文本小于预期。 通过更改 type 属性,您还可以设置视图的宽度 - 这使用 .frame() 函数来尊重 readableContentGuide。
VStack {
Text("This text is already in a padded container, so I will rather set its width")
.fitToReadableContentGuide(type: .width)
}
.padding(100)
Xcode
-> Project Settings
并选择您的项目Package Dependencies
选项卡,然后单击 +https://github.com/yazio/ReadabilityModifier
粘贴到搜索栏中,然后单击“Add Package”将 ReadabilityModifier 添加为包依赖项,如下例所示
// swift-tools-version:5.6
import PackageDescription
let package = Package(
name: "YourProject",
platforms: [
.iOS(.v14),
],
dependencies: [
.package(name: "ReadabilityModifier", url: "https://github.com/yazio/ReadabilityModifier.git", .branch("main"))
],
targets: [
.target(name: "YourProject", dependencies: ["ReadabilityModifier"])
]
)
如果您有兴趣在完全远程的职位上从事架构良好的营养与健康应用程序,我们很乐意收到您的来信! 查看我们的空缺职位,如果您有任何疑问,请随时与我们联系。