当前位置: 首页 > news >正文

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)}
}

请添加图片描述

相关文章:

  • huawei services HK华为云服务
  • mysql启动报错:ERROR! The server quit without updating PID file
  • 从0开始回顾MySQL --- 三范式与表设计
  • 腾讯云对象存储的在Java使用步骤介绍
  • Vue学习日记 Day7 —— json-server工具、基于VueCli自定义创建项目、postcss插件
  • C语言中volatile关键字的用法
  • 华为配置敏捷分布式SFN漫游实验
  • 【Golang】golang使用三方SDK操作容器指南
  • 爬虫(五)
  • 面向对象编程第二式:继承 (Java篇)
  • oppo前端开发一面
  • 24计算机考研调剂 | 重庆工商大学
  • Mysql中的engine
  • C++(3/13)
  • Linux:kubernetes(k8s)Deployment的操作(13)
  • JavaScript HTML DOM
  • Java-详解HashMap
  • Vue.js源码(2):初探List Rendering
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 对超线程几个不同角度的解释
  • 二维平面内的碰撞检测【一】
  • 理清楚Vue的结构
  • 普通函数和构造函数的区别
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 延迟脚本的方式
  • ionic入门之数据绑定显示-1
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • ###C语言程序设计-----C语言学习(6)#
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (007)XHTML文档之标题——h1~h6
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (办公)springboot配置aop处理请求.
  • (超详细)语音信号处理之特征提取
  • (第27天)Oracle 数据泵转换分区表
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二)JAVA使用POI操作excel
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (转)fock函数详解
  • (转)大型网站架构演变和知识体系
  • .net web项目 调用webService
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 中创建支持集合初始化器的类型
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .net反混淆脱壳工具de4dot的使用
  • .NET是什么
  • .NET中的十进制浮点类型,徐汇区网站设计
  • .Net组件程序设计之线程、并发管理(一)
  • [.net] 如何在mail的加入正文显示图片
  • [16/N]论得趣
  • [Android]使用Retrofit进行网络请求