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 ...
随机推荐
- 将自己喜欢的网页保存为单个文件包括图片(mhtml文件)
from selenium import webdriver driver = webdriver.Chrome(r'C:\chromedriver_win32\chromedriver.exe') ...
- Instsrv.exe 与 Srvany.exe 安装Windows服务
原理:Instsrv.exe可以给系统安装和删除服务 Srvany.exe可以让exe程序以服务的方式运行(Srvany只是exe注册程序的服务外壳,可以通过它让我们的程序以SYSTEM账户活动,随电 ...
- 我对IdentityServer4的初步了解
官网:https://identityserver4.readthedocs.io/en/latest/quickstarts/2_interactive_aspnetcore.html 官网例子:h ...
- django---展示多级评论
实现原理: 在页面加载完成后,jQuery调用initComments()函数,initComments()函数会向后端发起Ajax请求,后端收到请求后,会把所有评论的数据以JSON格式返回到前端,然 ...
- opencv-python 实现鱼眼矫正 棋盘矫正法
.htmledit_views address, .htmledit_views cite, .htmledit_views dfn, .htmledit_views em, .htmledit_vi ...
- 使用Python实现深度学习模型:序列到序列模型(Seq2Seq)
本文分享自华为云社区<使用Python实现深度学习模型:序列到序列模型(Seq2Seq)>,作者: Echo_Wish. 序列到序列(Seq2Seq)模型是一种深度学习模型,广泛应用于机器 ...
- kettle从入门到精通 第三十三课 再谈 kettle 表输出 分区/分片
1.之前第九章有讲过kettle 表输出步骤,里面有简单的提到过表输出步骤里面的表分区设置,这里详细介绍下. 表分区数据:选择此选项可根据"分区"字段中指定的日期字段的值将数据拆分 ...
- 第四届物联网与机器学习国际学术会议(IoTML 2024)
[ACM独立出版,高录用,见刊检索快速稳定]第四届物联网与机器学习国际学术会议(IoTML 2024) [IoTML 2023会后三个半月内完成EI检索]2024 4th International ...
- CSV文件存储
CSV 文件存储 CSV,全称为 Comma-Separated Values,中文可以叫作逗号分隔值或字符分隔值,其文件以纯文本形式存储表格数据.该文件是一个字符序列,可以由任意数目的记录组成,记录 ...
- 【iOS】自定义CALayer可能会出现没有动画过程但有动画结果的解析
按照计划是要做成这样的动画 可是结果变成了这样 (有时候最重要的不是结果而是过程,日常鸡汤) 结果没有问题说明delegate中- (void)animationDidStop:(CAAnimatio ...