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()
   }
}
AI 代码解读

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

目录
打赏
0
相关文章
分享64个JavaGame源码总有一个是你想要的
分享64个JavaGame源码总有一个是你想要的
299 0
iOS系统菜单控制器UIMenuController使用简介(一)
iOS系统菜单控制器UIMenuController使用简介
765 0
iOS系统菜单控制器UIMenuController使用简介(一)
苹果iOS新手开发之Swift 中获取时间戳有哪些方式?
在Swift中获取时间戳有四种常见方式:1) 使用`Date`对象获取秒级或毫秒级时间戳;2) 通过`CFAbsoluteTimeGetCurrent`获取Core Foundation的秒数,需转换为Unix时间戳;3) 使用`DispatchTime.now()`获取纳秒级精度的调度时间点;4) `ProcessInfo`提供设备启动后的秒数,不表示绝对时间。不同方法适用于不同的精度和场景需求。
394 3
阿里云佘俊泉:边缘云场景的探索与机遇
阿里云佘俊泉:边缘云场景的探索与机遇
153 0
构建高效运维体系:从监控到自动化的实践之路
在当今信息技术飞速发展的时代,运维作为保障企业信息系统稳定运行的关键环节,其重要性日益凸显。本文将探讨如何通过构建高效的运维体系,实现从被动响应到主动预防的转变,以及如何利用自动化工具提升运维效率和质量。我们将从运维的基本概念出发,逐步深入到监控、自动化和安全管理等方面,为企业提供一套实用的运维优化方案。
191 0
|
11月前
Vue3卡片(Card)
这是一个基于Vue3的卡片组件库,提供多样化的卡片展示效果,包括不同尺寸、加载状态及自定义样式等。支持设置宽度、标题、边框等属性,并可通过`loading`参数显示加载占位符。
586 1
Vue3卡片(Card)
pod spec lint编译时报error: include of non-modular header inside framework module
pod spec lint编译时报error: include of non-modular header inside framework module
273 1
Vue项目使用Cookie,以Json格式存入与读取Cookie,设置过期时间以及删除操作
这篇文章介绍了在Vue项目中如何使用JavaScript操作Cookie,包括设置、读取、设置过期时间以及删除Cookie的方法。
549 0
如何在C语言中进行图形界面编程
在C语言中进行图形界面编程是一项非常有挑战性和有趣的任务。虽然C语言主要用于系统级编程和算法开发,但我们仍然可以使用一些库来实现简单的图形界面。在本文中,我将介绍一种在C语言中进行图形界面编程的方法。
308 0
DataX深度剖析:解读数据传输工具的设计理念与架构特点
DataX深度剖析:解读数据传输工具的设计理念与架构特点
1005 5
DataX深度剖析:解读数据传输工具的设计理念与架构特点

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问