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 是一个显示静态文本的视图。你可以附加多个修饰符(例如 paddingfont, 和 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-基本使用的更多相关文章

  1. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  2. Java虚拟机JVM学习01 流程概述

    Java虚拟机JVM学习01 流程概述 Java虚拟机与程序的生命周期 一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程序时,一个虚拟机实例诞生:当程序关闭退出,这 ...

  3. Android Testing学习01 介绍 测试测什么 测试的类型

    Android Testing学习01 介绍 测试测什么 测试的类型 Android 测试 测什么 1.Activity的生命周期事件 应该测试Activity的生命周期事件处理. 如果你的Activ ...

  4. Java学习01

    Java学习01 第一章 1.JRE与JDK JDK(JAVA Develop Kit,JAVA开发工具包)提供了Java的开发环境和运行环境,主要用于开发JAVA程序,面向Java程序的开发者; J ...

  5. ThinkPhp学习01

    原文:ThinkPhp学习01 一.ThinkPHP的介绍           MVC  M - Model 模型                工作:负责数据的操作  V - View  视图(模板 ...

  6. 【iScroll源码学习01】准备阶段 - 叶小钗

    [iScroll源码学习01]准备阶段 - 叶小钗 时间 2013-12-29 18:41:00 博客园-原创精华区 原文  http://www.cnblogs.com/yexiaochai/p/3 ...

  7. JVM学习01:内存结构

    JVM学习01:内存结构 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. 内存结构知识要点Xmind梳理 案例分析 分析1 package com.h ...

  8. webservice学习01:wsdl文档结构

    webservice学习01:wsdl文档结构 wsdl文档结构 WSDL文档示例 <wsdl:definitions xmlns:xsd="http://www.w3.org/200 ...

  9. spring学习(01)之IOC

    spring学习(01)之IOC IOC:控制反转——Spring通过一种称作控制反转(IOC)的技术促进了低耦合.当应用了IOC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创 ...

  10. vue学习01

    vue学习01   1. 创建一个Vue实例官网-学习-教程-安装-(开发/生产版本)-与jQuery的引用相似 <!DOCTYPE html> <html> <head ...

随机推荐

  1. AIRIOT物联网平台助力油库自动化升级 实现业务场景全覆盖

      随着我国石油工业的飞速发展,油库规模迅速扩大,油库系统逐渐完善起来.石油行业属于高风险行业,所以石油化工产品在储存.运输和生产各个环节,均有极高的安监.环保.应急的管理要求.通常情况下,油库容量. ...

  2. mysql-8.4.0解压版安装记录

    MySQL 8.4.0解压版安装记录 这几天,安装最新版mysql 8.4的时候,遇到了不少问题,网上的教程大多数都是旧版本的,也安装不成功. 参考了大量教程后,经过自己的摸索终于装好了,这里记录一下 ...

  3. Java应用的优雅停机

    一. 优雅停机的概念 优雅停机一直是一个非常严谨的话题,但由于其仅仅存在于重启.下线这样的部署阶段,导致很多人忽视了它的重要性,但没有它,你永远不能得到一个完整的应用生命周期,永远会对系统的健壮性持怀 ...

  4. 像阿里OSS一样的文件对像存储服务,容器实现 docker初探及minio测试

    像阿里OSS一样的文件对像存储服务,容器实现 docker run -p 8000:9000 --name oss-minio -d -e "MINIO_ACCESS_KEY=AKIAIOS ...

  5. STM32WB55 BLE双核flash擦写程序深度解析

    简介 STM32WB55的flash擦除有两种机制,一种是只有单核运行下的flash擦除,这种模式下,flash擦除的步骤同其他STM32的flash擦除一样,直接调用HAL库中flash擦除的库函数 ...

  6. 春松客服入驻Rainbond开源应用商店

    "做好开源客服系统" 春松客服是拥有坐席管理.渠道管理.机器人客服.数据分析.CRM 等功能于一身的新一代客服系统.将智能机器人与人工客服完美融合,同时整合了多种渠道,结合 CRM ...

  7. Aqua 专为自动化测试打造的IDE

    JetBrains是一家全球知名的软件开发公司,他们公司推出的IDE几乎是编程语言的首选,IntelliJ IDEA 之于Java,PyCharm之于Python,以及GoLand之于go等. 5月2 ...

  8. itest(爱测试) 接口测试,敏捷测试管理平台 10.4.0 发布

    一:itest work 简介 itest work 开源敏捷测试管理,包含极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock,还有压测 ,又有丰富的统计分析,8合1工作站.可按 ...

  9. python+k8s(基础,遇到的问题)

    python+k8s(基础,遇到的问题) CoreV1Api和ApiClient的区别 kubernetes.client.CoreV1Api kubernetes.client.ApiClient ...

  10. P7959 [COCI2014-2015#6] WTF 题解

    P7959 [COCI2014-2015#6] WTF 题解 呃,是一道 DP 题 说实话,原题实际上是不要输出一种方法的--但是似乎放这道题的人想增加一点难度? 这里有两种做法,但都是 DP. 预备 ...