swiftUI中的可变属性和封装

swiftUI的可变属性

关于swift中的属性,声明常量使用let , 声明变量使用var
如果需要在swiftUI中更改视图变化那么就需要在 var前面加上@state 。 通过挂载到state列表 ,从而让xcode找到对应的改变的值

例子:


import SwiftUIstruct StateBootCamp: View {@State var customColor = Color.redvar body: some View {ZStack{customColor.ignoresSafeArea()VStack(spacing: 20, content: {Text("title")Text("count : 1")HStack(spacing: 20, content: {Button("yellow".uppercased()) {self.buttonHandle(enter: "yellow")}Button("pink".uppercased()) {self.buttonHandle(enter: "pink")}Button("green".uppercased()) {self.buttonHandle(enter: "green")}})})}}/// 将点击事件封装出来func buttonHandle(enter: String) {switch enter {case "yellow":self.customColor = Color.yellowcase "pink":self.customColor = Color.pinkcase "green":self.customColor = Color.greendefault:break}}
}#Preview {StateBootCamp()
}

效果图:
在这里插入图片描述

上面代码块通过封装视图的背景色从而达到点击不同按钮更改背景颜色的效果。

swiftUI的方法封装

/// 将点击事件封装出来func buttonHandle(enter: String) {switch enter {case "yellow":self.customColor = Color.yellowcase "pink":self.customColor = Color.pinkcase "green":self.customColor = Color.greendefault:break}}

把方法封装出来这样代码看起来就不会把按钮点击事件和UI代码放在一起,看起来会舒服点。

swiftUI的图层代码封装

swiftUI的图层代码封装代码和效果图如下:

import SwiftUIstruct ExtracSubviewsBootCamp: View {var body: some View {ZStack{Color(Color.blue).ignoresSafeArea()/// 引入封装了的图层contentLayer}}/// 把UI的代码封装出来从而更清晰var contentLayer: some View {HStack {MyItem(title: "Apples", count: 1, bgColor: .red)MyItem(title: "Bananas", count: 2, bgColor: .yellow)MyItem(title: "Oranges", count: 13, bgColor: .orange)}}}#Preview {ExtracSubviewsBootCamp()
}/// 提取子视图
struct MyItem: View {let title: Stringlet count: Intlet bgColor: Colorvar body: some View {VStack {Text("\(count)")Text(title)}.padding().background(bgColor).cornerRadius(10).shadow(radius: 10)}
}

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/541835.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 ZipArchiveInputStream 读取压缩包内文件总数

读取压缩包内文件总数 简介 ZipArchiveInputStream 是 Apache Commons Compress 库中的一个类,用于读取 ZIP 格式的压缩文件。在处理 ZIP 文件时,编码格式是一个重要的问题,因为它决定了如何解释文件中的字符数据。通常情况下,Z…

Spring boot java: 无效的目标发行版: 18

idea 搭建spring boot 报错java: 无效的目标发行版: 18 本人jdk 1.8 解决方案如下:

Vue2+ElementUI表单、Form组件的封装

Vue2ElementUI表单、Form组件的封装 :引言 在 Vue2 项目中,ElementUI 的 el-form 组件是常用的表单组件。它提供了丰富的功能和样式,可以满足各种需求。但是,在实际开发中,我们经常会遇到一些重复性的需求&#xff0c…

Prometheus 轻量化部署和使用

文章目录 说明Prometheus简介Grafana简介prometheus和Grafana的关系环境准备(docker)docker安装时间时区问题(我的代码中)dockers镜像加速和服务器时区设置 数据库准备(mysql、redis)mysql配置redis配置 Prometheus、grafana下载和…

《操作系统真相还原》读书笔记九:用c编写内核

用c语言先编写一个死循环 main.c int main(void) {while(1);return 0; }编译该文件 gcc -c -o main.o main.c-- Ttext参数表示起始虚拟地址为0xc0001500 -e参数表示程序入口地址 ld main.o -Ttext 0xc0001500 -e main -o kernel.bin-- 将kernel.bin写入第9个扇区 dd if/ho…

【Session】Tomcat Session 集群

设备 nginx:192.168.67.11 tomcat1:192.168.67.12 tomcat2:192.168.67.13安装nginx (192.168.67.11) #关闭防火墙和安全机制 [roottest1 ~]# systemctl stop firewalld [roottest1 ~]# setenforce 0#安装epel源 [ro…

Unity类银河恶魔城学习记录10-10 p98 UI health bar源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili HealthBar_UI.cs using System.Collections; using System.Collections.G…

5 个适用于 Windows 10 和 11 的最佳 PDF 转 Word 转换器

PDF 文件是共享文档的首选格式,但是此类文件存在一些限制,导致难以修改或编辑。因此,您可能会发现自己正在寻找一种将 PDF 文件转换为 Word 或其他可编辑格式的方法。 有许多不同的 PDF 转换器,每种转换器提供的功能略有不同。本…

❤ css布局篇

❤ css布局篇 一、基础布局 &#xff08;1&#xff09;居中布局 ① 文字居中 <div class"div1">测试文字居中</div> body {margin: 0;padding: 0;padding: 10%; } .div1 {width: 100px;height: 100px;background: cadetblue;text-align: center; }te…

【elasticsearch实战】从零开始设计全站搜索引擎

业务需求 最近需要一个全站搜索的功能&#xff0c;我们的站点的特点是数据多源&#xff0c;即有我们本地数据库&#xff0c;也包含了第三方数据源&#xff0c;我们的数据类型除了网页&#xff0c;还包括了各种类型的文档&#xff0c;例如&#xff1a;doc、pdf、excel、ppt等格…

IDEA编译安卓源码TVBox(2)

一、项目结构&#xff1a;主要app和player app结构 二、增加遥控器按键选台 修改LivePlayActivity.java 1、声明变量 public String channelId "";public Timer timer new Timer();public Toast mToast;2、定义方法 private void mToastShow(String s){mToast …

Soft Robotics 变结构手掌和变刚度手指的仿人软体手的人机交互操作-武科大ESIR课题组师兄成果

一、引言 在当今的机器人技术领域&#xff0c;人类对机器人的需求日益增长&#xff0c;涉及到工业生产、医疗护理、服务业等各个领域。然而&#xff0c;由于任务的多样性和复杂性&#xff0c;单独依靠自主机器人操作往往难以满足实际需求。为了解决这一问题&#xff0c;人机协作…