项目名称:layers
项目概述
Layers是一个设计用于创建分层用户界面的SwiftUI库,它通过平滑且高性能的动画增强了应用的用户体验。这个库允许开发者在模态视图之间轻松切换,同时保持界面的流畅性和响应性。
主要功能
分层用户界面:创建具有多个层次的界面,每个层次可以包含不同的头部、内容和按钮。
动画和过渡:在不同层次之间提供平滑的动画过渡效果。
自定义和扩展:允许开发者自定义层次内容,并且可以轻松扩展以适应不同的需求。
使用方法
要开始使用Layers,可以按照以下步骤操作:
下载仓库并查看示例。
将源文件夹复制到你的项目中以进行集成。
创建自己的Layer,遵循以下步骤:
@Bindable var layers: LayerModel = .init(
index: 0,
max: 3,
headers: [
0: AnyView(ExampleHeader1()),
1: AnyView(ExampleHeader2()),
2: AnyView(ExampleHeader3()),
],
contents: [
0: AnyView(ExampleContent1()),
1: AnyView(ExampleContent2()),
2: AnyView(ExampleContent3()),
],
buttons: [
0: [["Cancel": "xmark.circle"], ["Continue": "checkmark.circle"]],
1: [["Cancel": "xmark.circle"], ["Continue": "checkmark.circle"]],
2: [["Cancel": "xmark.circle"], ["Continue": "checkmark.circle"]],
]
)
在你的视图中,创建包裹在Layer中的内容:
var body: some View {
Layer {
layers.getCurrentHeader()
.id("layer.stack.header.\(layers.index)")
layers.getCurrentContent()
.id("layer.stack.content.\(layers.index)")
HStack {
if !layers.getCurrentButtons()[0].isEmpty {
LayerButton(text: Binding.constant(layers.getCurrentButtons()[0].keys.first ?? ""),
icon: Binding.constant(layers.getCurrentButtons()[0].values.first ?? ""),
background: .orange)
{
layers.previous()
}
}
if !layers.getCurrentButtons()[1].isEmpty {
LayerButton(text: Binding.constant(layers.getCurrentButtons()[1].keys.first ?? ""),
icon: Binding.constant(layers.getCurrentButtons()[1].values.first ?? ""),
background: .blue)
{
layers.next()
}
}
}
}
}
这种设置允许你广泛自定义你的层次,而不需要深入到多个页面或额外的文件中。未来的迭代将进一步简化这个工作流程。
项目地址
项目的GitHub地址为:raphaelsalaja/layers。