SwiftUI-基础
应用入口
Main函数与App结构体的绑定,遵循App协议
@main
struct BaseApp: App {var body: some Scene {WindowGroup {ContentView()}}
}
兼容UIApplicationDelegate
@main
struct BasicApp: App {@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegatevar body: some Scene { ... }
}class AppDelegate : NSObject, UIApplicationDelegate {func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {// launching...return true}
}
Swift 结构体与类的构造函数
// struct
struct BasicApp: App {init() { ... }
}// class
class AppDelegate: NSObject, UIApplicationDelegate {override init () { ... }
}
视图预览
遵守View协议,定义View结构体
struct ContentView: View {var body: some View {Text("Hello, world!").padding()}
}
遵守PreviewProvider协议,定义Previews结构体
struct ContentView_Previews: PreviewProvider {static var previews: some View {ContentView()}
}
UI布局
struct ContentView: View {var body: some View {VStack(alignment: .center, spacing: 30) {Text("文本").foregroundColor(.black)Button {print("target_action")} label: {Text("按钮").foregroundColor(.blue)}}}
}
VStack - 纵向布局
var body: some View {VStack(alignment: .leading, spacing: 10) { // 左对齐、元素间隔10pxText("Column 1")Text("Column 2")}.padding(20) // 内边距20px
}
HStack - 横向布局
var body: some View {HStack(spacing: 10) { // 居中、元素间隔10pxText("Column 1")Text("Column 2")}.padding() // 内边距-默认值
}
Text - 文本
var body: some View {Text("Hello, SwiftUI!").font(.title) // 字体设置.foregroundColor(.blue) // 文本颜色设置.multilineTextAlignment(.center) // 多行文本对齐方式设置.lineLimit(1) // 文本行数限制设置
}
Button - 按钮
var body: some View {Button { print("Button tapped") // 按钮点击事件处理} label: {Text("Click Me") // 按钮显示的文本.font(.title) // 字体设置.padding() // 内边距设置.background(Color.blue) // 背景颜色设置.foregroundColor(.white) // 前景颜色设置.cornerRadius(10) // 圆角设置}
}
Image - 图像
var body: some View {Image("exampleImage") // 根据名称加载图像.resizable() // 图像可调整大小.frame(width: 100, height: 100) // 设置图像框的尺寸.background(.gray)
}
TextField - 文本输入
@State private var textInput: String = ""var body: some View {VStack {TextField("Enter text", text: $textInput).textFieldStyle(RoundedBorderTextFieldStyle()) // 输入框样式设置.padding() // 内边距设置Text("You entered: \(textInput)")}.padding()
}
ScrollView - 滚动视图
var body: some View {ScrollView {ForEach(1...10, id: \.self) { index inText("Item \(index)").padding()}}
}
List - 表视图
var body: some View {List {Text("Row 1")Text("Row 2")Text("Row 3")}.listStyle(InsetListStyle()) // 样式设置
}
TextView - 多行文本输入
@State private var textInput: String = ""var body: some View {VStack {TextEditor(text: $textInput) // 多行文本输入视图.frame(height: 200) // 设置高度.border(Color.gray, width: 1) // 边框设置Text("You entered: \(textInput)")}.padding()
}
Alert - 警告弹窗
@State private var showAlert = falsevar body: some View {Button {showAlert = true} label: {Text("Show Alert")}.alert(isPresented: $showAlert) {Alert(title: Text("Warning"), message: Text("This is an alert!"), dismissButton: .default(Text("OK")))}
}
ActionSheet - 底部弹窗
@State private var showActionSheet = falsevar body: some View {Button {showActionSheet = true} label: {Text("Show ActionSheet")}.actionSheet(isPresented: $showActionSheet) {ActionSheet(title: Text("Options"), message: Text("Choose an action"), buttons: [.default(Text("Option 1"), action: {// Option 1 action}),.default(Text("Option 2"), action: {// Option 2 action}),.cancel() // 取消按钮])}
}
Picker - 选择器
@State private var selectedOption = 0
let options = ["Option 1", "Option 2", "Option 3"]var body: some View {VStack {Text("Selected option: \(options[selectedOption])")Picker("Options", selection: $selectedOption) {ForEach(0..<options.count, id: \.self) { index inText(options[index])}}.pickerStyle(WheelPickerStyle()) // 选择器样式设置}.padding()
}
相关文章:
SwiftUI-基础
应用入口 Main函数与App结构体的绑定,遵循App协议 main struct BaseApp: App {var body: some Scene {WindowGroup {ContentView()}} } 兼容UIApplicationDelegate main struct BasicApp: App {UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate…...
vue。cli怎么使用自定义组件,会有哪些问题
在Vue CLI中使用自定义组件的步骤如下: 通过仔细检查以上问题并按照正确的步骤使用自定义组件,大多数问题都可以解决。此外,查看开发者工具的控制台输出和Vue警告信息,可以帮助你进一步调试和解决可能出现的问题 创建自定义组件&a…...
linux----vim的使用
vi和vim是Linux下的一个文本编辑工具,最小化安装只有vi vim,需要额外安装,比vi更强大一些 # vim 操作文件,有三种模式:普通模式,编辑模式,命令模式 -vim 文件名刚进来----》普通模式--》只…...

95. Python基础教程:异常处理try...except语句
【目录】 文章目录 1. try...except语法解析2. 程序异常3. except的4种使用方式3.1 单独的except3.2 except 异常名称3.3 except 异常类型 as 别名3.4 except (异常类型1,异常类型2) as 别名 4. 总结 【正文】 1. try…except语法解析 try[traɪ]:尝试。 except[…...

详解rocketMq通信模块升级构想
本文从开发者的角度深入解析了基于netty的通信模块, 并通过简易扩展实现微服务化通信工具雏形, 适合于想要了解netty通信框架的使用案例, 想了解中间件通信模块设计, 以及微服务通信底层架构的同学。希望此文能给大家带来通信模块架构灵感。 概述 网络通信是很常见的需求&#…...
【BOOST程序库】对字符串的处理
基本概念这里不解释了,代码中详细解释了BOOST程序库中对于字符串每一个方法的详细用法: 注意:这里每实践一个方法,都将上面实践过的方法进行了注释,如果全部取消注释,会出现重命名的问题。 #include <…...

(学习笔记-内存管理)虚拟内存
单片机是没有操作系统的,每次写完代码,都需要借助工具把程序烧录进去,这样程序才能跑起来。另外,单片机的CPU是直接操作内存的[物理地址]。 在这种情况下,要想在内存中同时运行两个程序是不可能的。如果第一个程序在 2…...

JVM理论(七)性能监控与调优
概述 性能优化的步骤 性能监控:就是通过以非强行或入侵方式收集或查看应用程序运行状态,包括如下问题 GC频繁CPU过载过高OOM内存泄漏死锁程序响应时间较长性能分析:通常在系统测试环境或者开发环境进行分析 通过查看程序日志以及GC日志,或者运用命令行工…...

复现YOLOv8改进最新MPDIoU:有效和准确的边界盒回归的损失,打败G/E/CIoU,效果明显!!!
MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression 论文简介MPDIoU核心设计思路论文方法实验部分加入YOLOv5代码论文地址:https://arxiv.org/pdf/2307.07662.pdf 论文简介 边界盒回归(Bounding box regression, BBR)广泛应用于目标检测和实例分割,是目标…...

LT6911C 是一款HDMI 1.4到双端口MIPIDSI/CSI或者LVDS加音频的一款高性能芯片
LT6911C 1.描述: LT6911C是一款高性能的HDMI1.4到MIPIDSI/CSI/LVDS芯片,用于VR/智能手机/显示器应用程序。对于MIPIDSI/CSI输出,LT6911C具有可配置的单端口或双端口MIPIDSI/CSI,具有1个高速时钟通道和1个~4个高速数据通道&#…...

vue动态引入静态资源
vue动态引入静态资源 静态资源位置(../../assets/piecture/page404.jpg)或者(/assets/piecture/page404.jpg) 错误引入方式 错误引入方式(一) <template><div><img :src"../../asset…...
perl 强制覆盖拷贝文件
如果你想在Perl中进行文件拷贝时强制覆盖目标文件(如果目标文件已经存在),你可以使用标准模块File::Copy提供的cp函数,它允许你指定是否覆盖目标文件。 以下是一个示例,展示了如何在Perl中进行强制覆盖拷贝文件&#…...

C语言每日一题之整数求二进制1的个数
今天分享一道题目,用三种方法来求解 二进制1的个数 方法1 我们的十进制除10和取余数就可以得到我们每一位的数字,那我们的二进制也可 以 #include<stdio.h> int num_find_1(unsigned int n) {int count 0;while (n){if (1 n % 2){count;}n / 2…...
AcWing 4443.无限区域
原题链接:AcWing 4443.无限区域 题目来源:夏季每日一题2023 给定一个无限大的二维平面,设点 S 为该平面的中心点。 设经过点 S 的垂直方向的直线为 P,如果直线 P 是一个圆的切线,且切点恰好为点 S,那么&a…...

2D坐标系下的点的转换矩阵(平移、缩放、旋转、错切)
文章目录 1. 平移 (Translation)2. 缩放 (Scaling)3. 旋转 (Rotation)4. 错切 (Shearing)5. 镜像 (Reflection) 1. 平移 (Translation)…...
【Rabbitmq】报错:ERROR CachingConnectionFactory Channel shutdown: channel error;
报错内容 ERROR CachingConnectionFactory Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code406, reply-textPRECONDITION_FAILED - unknown delivery tag 1, class-id60, method-id80) 原因 默认是自动ack,然后你代码…...
el-table组件的el-table-column电脑端使用fixed属性固定,移动端不使用固定,怎么实现?
要在电脑端使用 fixed 固定列,而在移动端不使用,可以使用 CSS 媒体查询结合 Vue 的动态绑定来实现。以下是一个示例代码: <template><el-table><el-table-columnprop"name"label"Name":fixed"isDesk…...

RocketMQ 行业分享
5.0的架构发生了重大调整,添加了一层rocketmq-proxy,可以通过grpc的方式接入。 参考 https://juejin.cn/post/7199413150973984827...

物联网场景中的边缘计算解决方案有哪些?
在物联网场景中,边缘计算是一种重要的解决方案,用于在物联网设备和云端之间进行实时数据处理、分析和决策。HiWoo Box作为工业边缘网关设备,具备边缘计算能力,包括单点公式计算、Python脚本编程以及规则引擎,它为物联网…...

【C++ 进阶】学习导论:C/C++ 进阶学习路线、大纲与目标
目录 一、C 学习路线 二、C 课程大纲与学习目标 (1)第一阶段:C 语言基础 (2)第二阶段:C 高级编程 (3)第三阶段:C 核心编程与桌面应用开发 (4…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...

Android写一个捕获全局异常的工具类
项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...
前端调试HTTP状态码
1xx(信息类状态码) 这类状态码表示临时响应,需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分,客户端应继续发送剩余部分。 2xx(成功类状态码) 表示请求已成功被服务器接收、理解并处…...
字符串哈希+KMP
P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...