这个文档是在你 完全熟悉 Objective-C 上用代码构造UI的前提下写的

官方教程:https://developer.apple.com/tutorials/swiftui/creating-and-combining-views

*使用的一些截图和代码来自官方文档(不知道几年后这个链接还有没有效— —)

一.控件的写法:

一些基础控件,没有太多歧义,直接用 .属性名 来修改

 Text

 (显然California就是显示的文本内容)

 Image

简洁了好多,终于可以直接用图片的名字生成图片控件了

 预览图:

 二. stack

ZStack      HStack      VStack

Z -  Z轴 (重叠)

H - Horizontal 水平

V - Vertical 垂直

这三种Stack都会生成一个“View”,写在他的{}中的内容都会被add在stack的View中作为一个 整体 参与Stack的布局:

所以你也可以把这三种Stack在布局中视作一个控件/视图

用下面的代码直观的展示一下 HStack 和 VStack :

  预览图:

我们先看 “Joshua Tree National Park” 和 “California” 这两个Text

我们在代码中,把他们写在了一个 HStack 中,所以他们是水平方向布局的

同时,“Trutle Rock”这个Text,和↑上面这个HStack 又被写在了一个VStack中

然后我们就看到了,TurleRock和其余两个Text组成的整体是垂直方向布局的

如果你使用了ZStack,那么界面是沿Z轴叠放布局的

三.然后是我在布局中遇到的第一个问题:如何让控件能够靠着右边界布局?

apple 居然提供了一个专用的控件

Spacer()

Spacer()被加入后,会以“填满该空间”为目的调整自己的尺寸

所以在上面的布局中增加一个Spacer(),以“填满空间”为目的,后添加的“California”就被顶到了靠右边界的位置

四.padding

padding是控件的空白填充/边距

你为一个控件设置了padding之后,系统会在控件的边界生成空白的边距

padding(20) - 保留各方向20的留白

padding(.bottom, 20) - 只添加底部20的留白

如果你写了padding()但是没有给具体数值,系统会用一个默认值填充↓

[Swift] SwiftUI布局的一些写法基础(用Swift构造UI布局)的更多相关文章

  1. 几种常见布局的flex写法

    flex布局目前基本上兼容主流的浏览器,且实现方式简单.我整理了flex的一些知识点,并且总结归纳了几种常见布局的flex写法 ​flex基础知识点 flex-grow和flex-shrink相关计算 ...

  2. 零基础使用Swift学习数据科学

    概述 Swift正迅速成为数据科学中最强大.最有效的语言之一 Swift与Python非常相似,所以你会发现2种语言的转换非常平滑 我们将介绍Swift的基础知识,并学习如何使用该语言构建你的第一个数 ...

  3. 解析SwiftUI布局细节(二)循环轮播+复杂布局

    前言 上一篇我们总结的主要是VStack里面的东西,由他延伸到 @ViewBuilder, 接着我们上一篇总结的我们这篇内容主要说的是下面的几点,在这些东西说完后我准备解析一下苹果在SiwftUI文档 ...

  4. 01_Swift2基础之Swift简介+创建

    1.Swift 1> Swift初影响 Swift 是新一代的 iOS.OS X 和 watchOS 和 tvOS 的app开发编程语言. 中文名"雨燕",寓意为敏捷.灵巧而 ...

  5. 网页制作之html基础学习4-格式与布局

    1.position:fixed 锁定位置(相对于浏览器的位置),例如有些网站的右下角弹窗 例: <head> <title>123</title> <sty ...

  6. swift 全局常量 && 全局变量的写法

    在OC里面 如果 想设置一个全局常量 很简单 使用简单宏定义  就搞定了 例如: #define    WEBAPIBASEURL  @"http://www.baidu.com/" ...

  7. Android布局需要知道的基础知识

    eclipse配置环境变量: 1.在 eclipse 中的 Window --> preferences  --> Android(安装了ADT的前提下才能看到Android) --> ...

  8. 【RN - 基础】之FlexBox弹性布局

    前言 弹性盒模型(The Flexible Box Module),又叫FlexBox,意为“弹性布局”,旨在通过弹性的方式来对齐和分布容器中内容的空间,使其能适应不同的屏幕,为盒装模型提供最大的灵活 ...

  9. AppleWatch___学习笔记(二)UI布局和UI控件

    1.UI布局 直接开发,你会发现Apple Watch并不支持AutoLayout,WatchKit里有个类叫做WKInterfaceGroup,乍一看像是UIView,但是这货其实是用来布局的.从 ...

  10. 让我们创建屏幕- Android UI布局和控件

    下载LifeCycleTest.zip - 278.9 KB 下载ViewAndLayoutLessons_-_Base.zip - 1.2 MB 下载ViewAndLayoutLessons_-_C ...

随机推荐

  1. 同类型芯片资源对比-CH32x芯片快速应用说明

    CH32Fx 系列芯片是基于 Cortex-M3 内核设计的微控制器,所以与大部分 ARM 工具和软件兼容. 此外,其外设和硬件设计兼容市场上一些主流微控制器,并在性能和功能上有所增强, 方便用户快速 ...

  2. immutable.js 学习笔记(三)----- Map

    一.Map Map在原生的js中对应的是Object这样的结构,它都是key-value的键值对,并且它是无序的 二. API (一) set:设定值 (二)delete:删除值 每做一次增删改查都会 ...

  3. 【笔记向】package.json main 作用

    package.json main 作用 在 package.json 文件中,"main" 字段指定了这个包在被其他包依赖时,入口文件的文件名. 例如,如果在 package.j ...

  4. Terraform基础入门 (Infrastructure as Code)

    highlight: idea theme: awesome-green 前言 像写代码一样管理基础设施. Terraform 使用较为高级的配置文件语法来描述基础设施,这个特性让你对配置文件进行版本 ...

  5. vue页面加载闪烁的问题以及解决方案

    一.原因: 问题:当我们打开Vue页面的时候,如果弱网环境,会出现一个闪烁的效果下图:加载闪烁问题效果 原因:因为在浏览器中先执行html代码,先渲染Dom,然后再执行JavaScript代码,Vue ...

  6. JavaScript是怎样实现继承的?

    一.是什么 继承(inheritance)是面向对象软件技术当中的一个概念. 如果一个类别B"继承自"另一个类别A,就把这个B称为"A的子类",而把A称为&qu ...

  7. 深入理解JavaScript对象

    前言 在 JavaScript 中,对象是一种非常常见的数据类型,几乎每个程序员都会在日常工作中频繁地使用对象.在本篇文章中,我们将深入了解 JavaScript 对象的一些基本概念和一些高级概念,这 ...

  8. Linux快照利器:Timeshift,备份和还原效果杠杠的

    转载csdn:Linux快照利器:Timeshift,备份和还原效果杠杠的_网络技术联盟站-CSDN博客

  9. SQL语句中 left join 后用 on 还是 where,区别大了!

    前天写SQL时本想通过 A left B join on and 后面的条件来使查出的两条记录变成一条,奈何发现还是有两条. 后来发现 join on and 不会过滤结果记录条数,只会根据and后的 ...

  10. CSS3 滑过加过渡效果

    .vogueHover { width: 100%;height: 100%; position: absolute; left: 0; top: 0; background: #001e50; z- ...