SwiftUI 中自定义 container

简介: 自定义容器是在 Swift UI 中实现复杂布局和视图组合的强大工具。通过自定义容器,我们可以将一组视图组织在一起,以创建可重用的 UI 元素,同时保持一致的外观和行为。在本文中,我们将探讨如何使用自定义容器来实现一个主题,并深入了解其设计和实现细节。

SwiftUI 中自定义 container

自定义容器是在 Swift UI 中实现复杂布局和视图组合的强大工具。通过自定义容器,我们可以将一组视图组织在一起,以创建可重用的 UI 元素,同时保持一致的外观和行为。在本文中,我们将探讨如何使用自定义容器来实现一个主题,并深入了解其设计和实现细节。

在 Swift UI 中,容器是一种特殊类型的视图,它可以包含其他视图,并根据需要排列、组合和布局这些视图。Swift UI 提供了一些内置的容器视图,如 VStackHStackZStack,用于垂直、水平和层叠布局。然而,有时我们需要更灵活的布局方式,这就是自定义容器发挥作用的时候。

//
//  CustomContainer.swift
//  GuessFlag
//
//  Created by zhangyarn on 2022/11/13.
//

import SwiftUI

struct Mesh<Content: View> : View {
    

   let row : Int;
   let col: Int;
   @ViewBuilder let content: (Int, Int) -> Content;

   var body: some View {
    
       VStack{
    
           ForEach(0..<row) {
    r in
               HStack{
    
                   ForEach(0..<col) {
    c in
                       content(r,c);
                   }
               }
           }
       }
   }
}

struct CustomContainer: View {
    
   var body: some View {
    
//        Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
       Mesh(row: 3,col:3) {
    r, c in
           Image(systemName: "person")
           Text("R\(r) C\(c)")
               .padding()
       }
   }
}

struct CustomContainer_Previews: PreviewProvider {
    
   static var previews: some View {
    
       CustomContainer()
   }
}

上面的代码中我们定义了一个 Mesh 的 container, 它有两个参数 rowcol, 来画一个 row X col 的组成的一个网格。

相关文章
|
Swift 数据安全/隐私保护
SwiftUI 中自定义 modifier
在 Swift UI 中,自定义 Modifier 是一种强大的方式,可以让你轻松地封装和重用视图的样式和行为。在本文中,我们将探讨如何使用自定义 Modifier ,以便在应用程序中保持一致的外观和风格。
35avalon - 指令ms-widget(组件绑定介绍)
35avalon - 指令ms-widget(组件绑定介绍)
35 0
|
存储
SwiftUI100天:使用SwiftUI搭建一个单位转换App
在本章中,你将学会使用SwiftUI搭建一个单位转换App。
245 1
SwiftUI100天:使用SwiftUI搭建一个单位转换App
element-ui 控制台 『 Prop being mutated: "placement" 』的报错~
element-ui 控制台 『 Prop being mutated: "placement" 』的报错~
element-ui 控制台 『 Prop being mutated: "placement" 』的报错~
|
小程序 容器
讲述小程序之组件视图容器之movable-area与movable-view
讲述小程序之组件视图容器之movable-area与movable-view
418 0
讲述小程序之组件视图容器之movable-area与movable-view
SwiftUI极简教程10:State状态和Binding绑定的使用
SwiftUI极简教程10:State状态和Binding绑定的使用
1045 0
SwiftUI极简教程10:State状态和Binding绑定的使用
|
开发者 iOS开发
SwiftUI—创建第一个SwiftUI项目
SwiftUI—创建第一个SwiftUI项目
896 0
SwiftUI—创建第一个SwiftUI项目
|
C# 前端开发 数据安全/隐私保护
WPF QuickStart系列之附加属性(Attached Property)
原文:WPF QuickStart系列之附加属性(Attached Property) 这一篇博客是关于如何使用附加属性和创建自定义附加属性的。 1. 附加属性使用, WPF中对附加属性使用最多的莫过于对控件布局时设置控件的位置,例如在Canvas中有一个Rectangle, Ellipse, ...
1031 0
|
Web App开发 JavaScript 前端开发
bootstrap中container类和container-fluid类的区别
近几天才开始系统的学习bootstrap,但马上就遇到了一个‘拦路虎’:container和container-fluid到底什么区别。
1071 0