首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

面向所有人的 UI 编程 :透过点按弹窗初尝 SwiftUI

开始写点按弹窗之前,我们需要简单了解什么是 SwiftUI。简单来说,任何你在手机上看到的程序界面都叫 UI,也就是交互界面。...SwiftUI 集众家之长,具有诸多优秀特性,可以预见它将会出现在诸多应用程序。若你有兴趣,我会在其它文章详解 SwiftUI,本文只着重讲其中弹窗的写法与逻辑。 你会怎样描述一个程序?...下图就是它们 Xcode 的预设。 ?...纵向排列的 View SwiftUI 里叫做 VStack,它用一个花括号 {包住里面的内容};而文字的 View SwiftUI 里叫做 Text。...若你想仔细的学习 SwiftUI 和苹果或安卓应用程序开发,欢迎文末写下你想学习的内容,我会参考写文。

2.1K40

SwiftUI Overlay Container 2 —— 可定制、高效、便捷的视图管理器

因此,我写了一个组件希望可以帮助开发者 SwiftUI 快速完成上述需求。但受限于当时的技术能力,很多的想法都没有能够很好地实现。... SwiftUI ,描述视图已经变得十分的容易,因此我们完全可以将上述场景的显示逻辑提炼出来,创建出一个可以覆盖更多使用场景的库,帮助开发者组织视图的显示风格和交互逻辑。...其表现与 VStack 类似。 vertical 视图队列类型( Queue Type ) multiple 可以同时容器内显示多个视图。...容器管理器的环境值 SwiftUI ,视图代码通过环境值调用容器管理器。...指定的容器显示视图,返回值为视图的 ID dismiss(view id: UUID, in container: String, animated flag: Bool) 指定的容器,撤销指定

2.1K20

Swift 笔记#2 - SwiftUI 基础控件 Button 必知必会

本期学习 SwiftUI 基础控件 Button 的使用,内容基本涵盖了 Button 高频的使用场景;通过本节课你将收获: 常规创建 button 的 两种 方式 给按钮设置 图标、设置 圆角;更改...前景色 、背景色 给按钮设置 渐变背景色、阴影 效果 复用按钮样式,给按钮添加 动效 简单 交互 实现 视频版长度 14 分钟(内涵 5 小节) 视频讲解 https://v.qq.com/x/page.../b0941lzemwb.html 文字讲解 1、两种方式创建按钮 效果预览: s1 关键代码: VStack { Button("第一个按钮"){ print("被点击了")...font(.title) .foregroundColor(Color.green) } } 2、常用按钮样式 添加图标 前景色 背景色 完美圆角 效果预览: 关键代码: VStack...效果预览: 长款按钮 + 阴影 关键代码: Button(action: { print("被点击了呃") }){ Text("Hi~这是另一个 Button

1.6K20

SwiftUI 实现视图居中的若干种方法

欢迎大家 Discord 频道[2] 中进行更多地交流将某个视图父视图中居中显示是一个常见的需求,即使对于 SwiftUI 的初学者来说这也并非难事。... SwiftUI ,有很多手段可以达成此目的。本文将介绍其中的一些方法,并对每种方法背后的实现原理、适用场景以及注意事项做以说明。...当然,你也可以利用 Spacer 这个特性,控制 Text HStack 可使用的宽度。...SwiftUI 进行开发的过程,Color、Rectangle 等经常被用来实现对容器的等分操作。...我为本文这种通过多种方法来解决一个问题的方式添加了【小题大作】标签,目前使用该便签的文章还有: Core Data 查询和使用 count 的若干方法[6]、 SwiftUI 视图中打开 URL

6.6K40

SwiftUI 之 HStack 和 VStack 的切换

想了解更多信息,可以查看我的文章 - SwiftUI 布局系统第三章 目前,我们的按钮是垂直排列的,并且填满了水平线上的可用空间(你可以用以上示例代码预览按钮的样子),虽然这在竖向的 iPhone 上看起来很好...为了观察当前水平方向的尺寸,我们需要用到 SwiftUI 环境系统 — 通过 DynamicStack 声明 @Environment - 标记属性(带有 horizontalSizeClass...使用布局协议 虽然我们最后已经用了非常棒的解决方案,可以在所有支持 SwiftUI 的 iOS 版本中使用,但也让我们来探索一下 iOS 16 引入的一些新的布局工具(写这篇文章时,它作为...Xcode 14 的一部分仍在测试阶段) 其中一个工具是新的 Layout 协议,它既能让我们创建完整的自定义布局,直接集成到 SwiftUI 的布局系统,同时也提供给我们一种更丝滑更动画的方式各种布局之间动态切换...我们的例子,这意味着我们能同时把 HStack 和 VStack 传递给它,并且代表我们它们中间自动切换。

2.8K10

一段因 @State 注入机制所产生的“灵异代码”

State 注入的优化机制 SwiftUI ,对于引用类型,开发者可以通过 @StateObject、@ObservedObject 或 @EnvironmentObject 将其注入到视图中。...,SwiftUI 才执行 .sheet 闭包的函数,创建 Sheet 视图。...可以通过 Button 添加如下代码进行查看:Button("Set n = 2") { n = 2 show = true DispatchQueue.main.asyncAfter...也就是说 Sheet 的视图与原有视图分别处于不同的上下文中。 SwiftUI 早期的版本,对于分别位于不同上下文的独立的视图树,开发者需要显式为 Sheet 视图树注入环境依赖。...面对这些“灵异现象”时,如果我们能对其进行更多的研究,那么不仅可以今后避免类似的问题,而且分析的过程,也能对 SwiftUI 的各种运行机制有深入的掌握。希望本文能够对你有所帮助。

1.9K20

SwiftUI案例:3D旋转图片播放器

SwiftUI案例:3D旋转图片播放器 效果 目标 实现多张图片的3D切换查看功能 外观配置 任选 7 张任意尺寸的图片按 p1 至 p7 进行命名并拖拽进 Assets.xcassets 文件(如图所示...) 创建View视图 工作区的项目文件夹下创建名为 View 的 Group 并在其中依次创建 Home.swift CarouseBodyView.swift ScrollViewOffsetModifier.swift...var previews: some View { Home() } } 控件视图 CarouseBodyView.swift 通过视图容器的嵌套布局,实现 Home.swift 组件的文本与图片的具体内容...(垂直排列子元素的视图)容器 VStack(spacing: 25) { //嵌套VStack容器...previews: some View { ContentView() } } 滚动偏量视图 ScrollViewOffsetModifier.swift 这类似于 css

2.3K30

解析SwiftUI布局细节(一)

前言 ---- 在前面的文章谈了谈对SwiftUI的基本的认识,以及用我们最常见的TB+NA的方式搭建了一个很基本的场景来帮助认识了一下SwiftUI,具体的文章可以SwiftUI分类部分查找...,这篇我准备写UI的时候从SwiftUI角度我们具体的应该怎样去做,或者说是用SwiftUI我们该从什么角度去解析一个页面。...,我们似乎是没有用到buildBlock函数的,那要是我们定义TestBuilder的时候要是不定义buildBlock是不是也可以,当然是不行的,这个具体的例子可以试试,调用的时候就会报错,告诉你没有...不知道看到这大家对ViewBuilder应该有了一些认识了吧,我会在后面的参考文章具体的在给几个例子地址,大家可以再仔细的看看,我们就看我们Demo的一个使用,他具体的一个场景是这样的,登录页面,...可以查看到 /// var body: some View { Background { /// 里面具体的视图内容

2.3K10

SwiftUI 的动画机制

SwiftUI ,我们不能命令某个视图从一个位置移动到另一个位置,为了实现上述效果,我们需要声明该视图状态 A 时所处的位置以及状态 B 时所处的位置,当由状态由 A 转到 B 时,SwiftUI..., value: V) -> some View where V : Equatable 第一种方式 SwiftUI 3.0 已被标注弃用,它是老版本 SwiftUI 中导致动画异常的元凶之一。...自定义转场 SwiftUI 实现自定义转场并不困难,除非需要创建炫酷的视觉效果,大多数情况下都可以通过使用 SwiftUI 已提供的可动画部件组合而成。...100 : 0) // 同一视图两种状态声明 代码一描述了依赖项 show 发生变化时,SwiftUI 将在分支一和分支二进行切换。... ViewBuilder 研究(下) —— 从模仿中学习[9] 一文,我们展示了 SwiftUI 的 Text 是如何处理它的扩展方法的。

14.6K40

SwiftUI 的Stack

昨天我们简单浏览了一下SwfitUI,今天看看里面的组件吧 就从Stack说起,stack查看文档我们看到HVZ三种stack,那么分别是怎么用的呢?...ZStack import SwiftUI struct SKZStack :View { var body: some View{ ZStack { Text(...从图的观察我们知道,ZStack是大家水平的规则上一样,然后进行z方向的叠加,理解起来就是我们是个显示屏是平面,在这个基础上来个垂直于屏幕的方向上设置个轴线按次序把UI叠放在上面 VStack import...SwiftUI struct SKVStack: View { var body: some View { VStack(alignment: HorizontalAlignment.leading...这个就有意思啦是水平,按照从左到右按照先先后顺序放到那里 整体来说就是感觉像教学楼一样 同层教室按照VStack HStack,楼层间按照ZStack放置

2.2K10

避免 SwiftUI 视图的重复计算

并且 SwiftUI 会在其变化时自动更新( 重新计算 )对应的视图。 SwiftUI 上有一个困扰了不少人的问题:为什么无法视图的构造函数,更改 State 包装的变量值?...点击 random age 按钮修改 age 属性后,尽管 StudentNameView 并没有使用 age 属性,但 SwiftUI 仍然对 StudentNameView 和 StudentAgeView...这是因为,我们将 Student 类型作为参数传递给了子视图,SwiftUI 比对实例的时候,并不会关心子视图中具体使用了 student 的哪个属性,只要 student 发生了变化,那么就会重新计算...让视图符合 Equatable 协议 为视图自定义判断相等的比对规则 早期的 SwiftUI 版本,我们需要使用 EquatableView 包装符合 Equatable 协议的视图以启用自定义比较规则...会在主线程上运行触发器闭包,如果闭包的操作比较昂贵,可以考虑将闭包发送到后台队列 总结 本文介绍了一些 SwiftUI 如何避免造成视图重复计算的技巧,除了从中查找是否有能解决你当前问题的方法外

9.2K81

使用HSB而不是RGB来定义颜色

有多种方法可以代码定义颜色。最常用的方法是指定三种基色的值 - 红色、绿色和蓝色 (RGB)。本文通过指定色调、饱和度和亮度 (HSB) 的值来探索替代机制的使用。...可以 SwiftUI 创建一个调色板以显示可能的颜色。...请注意,色相(Hue) 通常被赋予一个以角度为单位的值,表示色环周围的角度,值 0 到 360 之间,SwiftUI 使用 0.0 到 1.0 之间的值,其中 1.0 表示 360 度。...SwiftUI 使用 0 到 1 之间的值来表示从 0 到 360 度的色调值。以下代码类似于在在 SwiftUI 创建一个环形 Slider的环形Slider用于显示色调选项。...SwiftUI 查看匹配的颜色 色轮显示每种色调的匹配颜色 总结 我发现使用 HSB 定义颜色是一种更直观的颜色定义方式。

2.6K30

SwiftUI 布局 —— 尺寸( 上 )

欢迎大家 Discord 频道[2] 中进行更多地交流 SwiftUI ,尺寸这一布局中极为重要的概念,似乎变得有些神秘。无论是设置尺寸还是获取尺寸都不是那么地符合直觉。...这并非意味着尺寸 SwiftUI 不重要,事实恰恰相反,正是由于 SwiftUI 尺寸是一个十分复杂的概念,苹果将绝大多数有关尺寸的配置和表述都隐藏到了引擎盖之下,刻意对其进行了包装与淡化。...、ZStack、List 等布局视图外, SwiftUI ,大量的布局容器是以视图修饰器的形式存在的。...SwiftUI 的尺寸 如上文中所示, SwiftUI 的布局过程不同的阶段、出于不同的用途,尺寸这一概念是不断地变化的。...ZStack ,ZStack 为子视图设置的渲染尺寸与子视图的需求尺寸一致 VStack VStack 将根据其父视图提供的建议尺寸、子视图是否为可扩展视图、子视图的视图优先级等信息,为子视图计算渲染尺寸

4.6K20

优化 SwiftUI List 显示大数据集的响应效率

SwiftUI 视图的生命周期研究[3] 一文,我对 List 如何对子视图的显示进行优化做了一定的介绍。...标识( Identity )是 SwiftUI 程序的多次更新识别相同或不同元素的手段,是 SwiftUI 理解你 app 的关键。... SwiftUI 应用代码,绝大多数的视图标识都是通过结构性标识 (有关结构性标识的内容可以参阅 ViewBuilder 研究(下) —— 从模仿中学习[4])来实现的 —— 通过视图层次结构(视图树... SwiftUI 为视图设置显式标识目前有两种方式: ForEach 的构造方法中指定 由于 ForEach 的视图数量是动态的且是在运行时生成的,因此需要在 ForEach 的构造方法中指定可用来标识子视图的...scrollByUITableView_2022-04-23_19.44.26.2022-04-23 19_46_20 希望 SwiftUI 之后的版本能够改善上面的性能问题,这样就可以无需使用非原生方法也能达成好的效果

9.1K20
领券