SwiftUI学习01-基本使用
SwiftUI 是苹果推出的一种现代化方式,用于创建跨所有 Apple 平台的用户界面。它通过声明性语法简化了 UI 的开发流程。下面是一个基本的 SwiftUI 示例,展示了如何使用 SwiftUI 构建一个简单的 "Hello World" 应用。
示例步骤
1. 创建一个新的 SwiftUI 项目
打开 Xcode,选择 "新建项目" 并选择 "App" 模板。在创建项目前,确保使用 "SwiftUI" 作为用户界面,语言选择 "Swift"。
2. 基本的 "Hello World" 示例
创建项目后,Xcode 会生成一个基本的 SwiftUI 文件。以下是如何使用 SwiftUI 实现一个最简单的 "Hello World" 示例:
import SwiftUI @main
struct HelloWorldApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
} struct ContentView: View {
var body: some View {
Text("Hello, World!")
.padding()
.font(.largeTitle)
.foregroundColor(.blue)
}
}
解释代码
@main:@main是 Swift 应用的入口点。在 SwiftUI 应用中,@main标记的结构体遵循App协议,定义了应用的主界面和行为。HelloWorldApp:这是应用的主入口,定义了应用启动时创建的场景(窗口)。
WindowGroup:WindowGroup定义了一个窗口内容。每个WindowGroup都包含一个ContentView。ContentView:这是一个遵循
View协议的结构体,定义了用户界面。Text:Text是一个显示静态文本的视图。你可以附加多个修饰符(例如padding,font, 和foregroundColor)来修改文本的外观。
增强示例:带有按钮的示例
我们可以进一步增强这个示例,通过添加一个按钮,实现点击按钮改变文本内容的功能。
import SwiftUI @main
struct HelloWorldApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
} struct ContentView: View {
@State private var message = "Hello, World!" var body: some View {
VStack {
Text(message)
.padding()
.font(.largeTitle)
.foregroundColor(.blue) Button(action: {
message = "Button Clicked!"
}) {
Text("Click Me")
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(10)
}
}
}
}
解释新增的代码
@State:@State属性包装器用于声明视图中的状态变量。状态变量变化时视图会自动更新。VStack:VStack是垂直堆栈视图,安排其子视图垂直排列。Button:Button表示一个按钮视图。action闭包在按钮点击时执行。
通过以上步骤与代码,你就可以实现一个简单的 SwiftUI 视图,并体验 SwiftUI 带来的简洁与高效的开发体验。如果你继续深入学习 SwiftUI,会发现更多丰富的特性和强大功能。
SwiftUI学习01-基本使用的更多相关文章
- Python学习--01入门
Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...
- Java虚拟机JVM学习01 流程概述
Java虚拟机JVM学习01 流程概述 Java虚拟机与程序的生命周期 一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程序时,一个虚拟机实例诞生:当程序关闭退出,这 ...
- Android Testing学习01 介绍 测试测什么 测试的类型
Android Testing学习01 介绍 测试测什么 测试的类型 Android 测试 测什么 1.Activity的生命周期事件 应该测试Activity的生命周期事件处理. 如果你的Activ ...
- Java学习01
Java学习01 第一章 1.JRE与JDK JDK(JAVA Develop Kit,JAVA开发工具包)提供了Java的开发环境和运行环境,主要用于开发JAVA程序,面向Java程序的开发者; J ...
- ThinkPhp学习01
原文:ThinkPhp学习01 一.ThinkPHP的介绍 MVC M - Model 模型 工作:负责数据的操作 V - View 视图(模板 ...
- 【iScroll源码学习01】准备阶段 - 叶小钗
[iScroll源码学习01]准备阶段 - 叶小钗 时间 2013-12-29 18:41:00 博客园-原创精华区 原文 http://www.cnblogs.com/yexiaochai/p/3 ...
- JVM学习01:内存结构
JVM学习01:内存结构 写在前面:本系列分享主要参考资料是 周志明老师的<深入理解Java虚拟机>第二版. 内存结构知识要点Xmind梳理 案例分析 分析1 package com.h ...
- webservice学习01:wsdl文档结构
webservice学习01:wsdl文档结构 wsdl文档结构 WSDL文档示例 <wsdl:definitions xmlns:xsd="http://www.w3.org/200 ...
- spring学习(01)之IOC
spring学习(01)之IOC IOC:控制反转——Spring通过一种称作控制反转(IOC)的技术促进了低耦合.当应用了IOC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创 ...
- vue学习01
vue学习01 1. 创建一个Vue实例官网-学习-教程-安装-(开发/生产版本)-与jQuery的引用相似 <!DOCTYPE html> <html> <head ...
随机推荐
- 大数据之Hadoop集群的HDFS压力测试
测试HDFS写性能 原文:sw-code 1)写测试的原理 2)测试内容:向HDFS集群写10个128MB的文件(3个机器每个4核,2 * 4 = 8 < 10 < 3 * 4 =12) ...
- Android OpenMAX(五)高通OMX Core实现
上一节了解了OMX Core提供的内容,这一节我们看看高通OMX Core是如何实现的.本节代码参考自: omx_core_cmp.cpp registry_table_android.c qc_om ...
- golang import 导入的四种方式
1 标准导入: import "package_name" 2 导入别名: import ( alias "package_name" ) 3 匿名导入: _ ...
- Swift 模式下面LLDB 输出对象
(lldb) expr -l Swift -- import UIKit (lldb) expr -l Swift -- let $pin = unsafeBitCast(0x7f81c8d459f0 ...
- sourceTree .gitignore文件处理
最近犯了个低级错误,在sourceTree中通过右键,直接将 工程文件加入到 ignore列表中.提交之后,别人拉下来代码一直显示报错 在意识到上面这个错误之后,一直想恢复却恢复不了,尝试从Sorce ...
- Pod安全策略:PodSecurityPolicy(PSP)
目录 一.系统环境 二.前言 三.PodSecurityPolicy 简介 四.为什么需要 PodSecurityPolicy 五.给客户端授权 六.启用PodSecurityPolicy(PSP) ...
- nmcli 报错
首先检查你的网卡设备有没有连接,看一下是不是进主机模式 nmcli connection modify ens32 ipv4.addresses 192.168.10.10/24 因为原本就存在网卡配 ...
- kvm链接克隆虚拟机迁移到openstack机器的实验
总结 如果是完整克隆的那种虚拟机,是可以直接在openstack使用的,如果镜像格式没问题的话. 因为kvm虚拟机大部分都是链接克隆出来的镜像,不可用直接复制使用,所以需要创建新的镜像文件 创建空盘: ...
- FlashDuty Changelog 2023-12-18 | 值班管理、服务日历、自定义操作和邮件集成
FlashDuty:一站式告警响应平台,前往此地址免费体验! 值班管理 UI 交互优化 [个人日程]从头像下拉菜单调整到值班列表页面,快速查看个人值班日程 [值班列表]支持原地预览最近一周值班情况,包 ...
- node.js常用命令总结
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,用于构建快速.可扩展的网络应用程序.它使用事件驱动.非阻塞 I/O 模型,使其非常适合构建数据密集型的实时应用 ...