首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

欢迎大家 Discord 频道[2] 中进行更多地交流将某个视图父视图中居中显示是一个常见需求,即使对于 SwiftUI 初学者来说这也并非难事。...Spacer HStack 只能进行横向填充,并不具备纵向高度( 高度为 0 ),因此 HStack 最终需求高度 Text 高度一致。...因此一个例子,即使没有为 HStack 设置 spacing ,Text 仍然会使用全部 HStack 宽度。...Text 中心点给定位置进行对齐( postion 是一个通过 CGPoint 来对齐中心点视图修饰 )当然,你也可以获取 Text Geometry 信息,通过 offset 或 padding...我为本文这种通过多种方法来解决一个问题方式添加了【小题大作】标签,目前使用该便签文章还有: Core Data 查询和使用 count 若干方法[6]、 SwiftUI 视图中打开 URL

6.6K40

使用 SwiftUI 创建一个灵活选择

前言 最近,我正在开发一个 Dribbble 找到设计 SwiftUI 实现时,我想到了一个点子,可以通过一些酷炫筛选扩展该项目以缩小结果列表。...让我们来看看使用 SwiftUI 创建灵活选择实现! 可选择协议 选择最重要部分是,我们可以通过该视图组件选择一些所需选项。因此,首先创建了一个 Selectable 协议。...所有符合该协议对象必须实现两个属性:displayedName(选择显示名称)和 isSelected(一个布尔值,指示特定选项是否已选择)。...(不能适应元素),并通过减去当前项宽度来更新 HStack 行宽。...然后,详细介绍了实现该选择逻辑,包括如何处理选项布局、宽度和高度,以及如何处理用户按钮交互。 最后,提供了一个简单视图实现,可以 SwiftUI 中使用该选择

24720
您找到你想要的搜索结果了吗?
是的
没有找到

SwiftUIHStack 和 VStack 切换

举个例子,假如我们正在构建一个 app 其中包含 LoginActionsView ,一个让用户登录时列表中选择操作类: struct LoginActionsView: View { .....DynamicStack 使用了 HStack 和 VStack 相同 API ,现在可以 LoginActionsView 中直接将以前 VStack 换成新自定义实例: struct...然而,就像上面的代码展示那样,使用 GeometeryReader 来展示动态切换有一个相当明显缺点,几何图形阅读总是会填充水平和垂直方向所有可用空间(以便测量实际空间)。...虽然我们也有很多方法能解决这些问题(例如使用类似在这篇 Q&A 中用来使多个视图具有相同宽度和高度技术),但真正问题是当我们要动态的确定方向时,测量可用空间是否是一个方法。...Xcode 14 一部分仍在测试阶段) 其中一个工具是新 Layout 协议,它既能让我们创建完整自定义布局,直接集成到 SwiftUI 布局系统,同时也提供给我们一种更丝滑更动画方式各种布局之间动态切换

2.8K10

何在 SwiftUI 视图中显示应用图标和版本

前言应用显示应用图标和版本是为用户提供快速识别应用版本和变体好方法,无论是内部用户(测试人员或利益相关者)还是外部用户。...本文中,我将展示如何创建一个可访问 SwiftUI 视图,既能显示应用图标和版本,又能在各种文本大小和外观下看起来都很好:获取应用图标构建视图第一步是从主包获取应用图标。...可以通过检索应用 Info.plist 文件一组键值来完成, Stack Overflow 这个答案所示:AppIconProvider.swiftimport Foundationenum...我们学习了如何在 SwiftUI 应用显示应用图标和版本信息。...获取到应用图标和版本信息后,我们创建了一个 SwiftUI 视图来展示这些信息。该视图使用水平堆栈(HStack)布局,将应用图标和版本信息并排显示。

10500

掌握 ViewThatFits

iOS 16 SwiftUI 增加了一个自适应布局容器 ViewThatFits。正如其名称所示,它作用是在给定多个视图中找出最合适视图并使用。...ViewThatFits 按照你提供给初始化顺序评估其子视图。它选择受限轴理想尺寸适应建议尺寸一个子视图。这意味着你按照优先级顺序提供视图。...如果在所有设置受限轴,理想尺寸都小于等于建议尺寸,那么选择该子视图,并停止对后续子视图进行判断。 如果所有的子视图都不满足条件,则选择闭包最后一个子视图。...一个 ViewThatFits 最终会选择那个子视图,取决于以下几个因素: ViewThatFits 可用空间(它父视图给它建议尺寸) ViewThatFits 设定受限轴 子视图受限轴理想尺寸...但是,任何强大工具一样,能否发挥期作用来自于深入理解其使用方式和限制。 本文中,我们对 SwiftUI ViewThatFits 容器进行了深入探索。

15710

使用 SwiftUI Eager Grids

例如,Eager Grids支持列跨越,而lazy grids不支持。归根结底,性能并不是唯一需要考虑因素。本文中,我们将探索这些新网格,以便您在选择其中一个时做出明智决定。...尽管这里大多数示例都可以,但每一可以包含任意数量单元格。 探索网格选项 以下部分,我们将探讨不同网格大小、对齐和跨越选项。...通常,列与其中最宽单元格一样宽。在下面的示例,橙色列宽度由第二中最宽单元格决定。身高也是如此。示例,第二中最高紫色单元格一样高。...这与我们从使用 HStack 容器第一天起就看到行为相同。但是,Grids 在这里为我们提供了一个选择。我们可以让单元格避免让网格增长以获得额外空间。...然而,今年还引入了一个布局协议,将我们视图放置屏幕时,它提供了更多选择。我们将在以后文章对此进行探讨。同时,我希望您喜欢这篇文章和 Grid 教练应用程序。 - EOF -

4.3K20

Ask Apple 2022 SwiftUI 有关问答(下)

Table 中上下文菜单Q:如果我 TABLE 添加了一个上下文菜单,我如何确定哪一导致了菜单显示(无需选择该行)?...快速检索数组元素Q:为什么没有简单方法将 TABLE 选择映射到提供表内容数组元素?似乎唯一方法是在数组搜索匹配 id 值,这对于大表来说似乎效率很低。...但是,如果你只是自己使用它,并且条件可控,那么不处理这些情况也是合理。创建一个考虑到所有情况通用布局( 例如:VStack、HStack )是一项相当艰巨工作。...连锁动画Q: SwiftUI ,如何实现连锁动画?例如,我想先给一个视图做动画,当动画完成后立即启动另一个动画。A:不幸是,目前不可能实现连锁动画。...其中 2 个是自定义形状( 基本是圆角矩形,只有两个角是 ),其中一个是矩形。编译抛出一个错误,说它花了太多时间来检查视图类型。

14.7K30

SwiftUI Core Data —— 数据定义

今后文章我们将尝试用新思路来创建一个 SwiftUI + Core Data app,看看能否避免并改善之前一些问题。本文将首先探讨如何定义数据。... Xcode 数据模型编辑创建实体 C_Group( 包括之有关系其他实体 C_Task )image-20221128124420013如有必要可以通过更改托管对象 C_Group 代码(...这个类型除了用于为 SwiftUI 视图提供数据外,同时也会被用于为其他数据流提供有效信息,例如类 Redux 框架,通过 Action 为 Reducer 提供所需数据。..._wrappedValue = wrappedValue }}现在, SwiftUI 视图中,MockGroup 将具备 C_Group 几乎一样能力,唯一不同是,它是通过一个 TodoGroup...我们将介绍如何在视图从 Core Data 获取数据操作这一过程实现托管环境解耦,创建一个可以接受 Mock 数据自定义 FetchRequest 类型。

2.4K40

SwiftUI + Core Data App 内存占用优化之旅

估计系统无暇进行清理操作有关。 图片 尽管上述优化技巧可能会对滚动流畅度产生一定影响( 视觉不明显 ),不过考虑到它所带来巨大收益,本例应该是一个相当不错选择。...存储协调缓存( Row cache in coordinator ) Core Data Stack 多层结构,存储协调( NSPersistentStoreCoordinator )正好处于持久化存储托管上下文之间...其向托管上下文以及持久化存储提供了单个统一接口,一个协调便可以应对多个上下文以及多个持久化存储。 图片 协调器具备众多功能,“缓存”是其中很有特点一个。...数据多份拷贝 当图片数据从 SQLite 经 Core Data 最终通过 SwiftUI 显示时,实际在内存至少保存了三份拷贝: 缓存 托管对象上下文( 托管对象被填充后 ) 显示该图片 SwiftUI...由于一个协调可以对应多个上下文,如果在另一个上下文中,指向同一个图片一个托管对象也进行了填充,那么就又会多出一个 Copy 不成功优化 首轮优化后代码基础,做如下添加: .onDisappear

2.4K40

SwiftUI + Core Data App 内存占用优化之旅

Navigator-Debug 尽管上述优化技巧可能会对滚动流畅度产生一定影响( 视觉不明显 ),不过考虑到它所带来巨大收益,本例应该是一个相当不错选择。...存储协调缓存( Row cache in coordinator ) Core Data Stack 多层结构,存储协调( NSPersistentStoreCoordinator )正好处于持久化存储托管上下文之间...其向托管上下文以及持久化存储提供了单个统一接口,一个协调便可以应对多个上下文以及多个持久化存储。 协调器具备众多功能,“缓存”是其中很有特点一个。...数据多份拷贝 当图片数据从 SQLite 经 Core Data 最终通过 SwiftUI 显示时,实际在内存至少保存了三份拷贝: 缓存 托管对象上下文( 托管对象被填充后 ) 显示该图片 SwiftUI...由于一个协调可以对应多个上下文,如果在另一个上下文中,指向同一个图片一个托管对象也进行了填充,那么就又会多出一个 Copy 不成功优化 首轮优化后代码基础,做如下添加: .onDisappear

1.2K10

使用 SwiftUI 为 macOS 创建类似于 App Store Connect 选择

我希望构建类似于 App Store Connect 选择组件,使用户体验尽可能熟悉,并在本文中,将展示如何使用 SwiftUI 为 macOS 构建了这个组件。...创建选择组件让我们分析一下,我们有一组想要在 SwiftUI 列表显示构建。每个构建都包含一组属性,其中之一是 betaGroups,它是一个表示构建所属测试群组结构体数组。...当用户悬停在特定测试群组组件时,修改 hoveringGroup 状态属性。使用 .overlay 修改在用户悬停在测试群组组件时显示一个移除按钮。该按钮从构建所属测试群组列表移除测试群组。...以上代码片段使用了 BetaGroup 结构体一个名为 displayName 属性来显示测试群组名称,类似于 App Store Connect 显示方式,显示名称前两个单词首字母大写...作者应用程序添加了一个界面,允许用户查看 TestFlight 所有可用构建,并将它们添加到测试群组

8710

SwiftUI水平条形图

SwiftUI水平条形图 水平条形图以矩形条形式呈现数据类别,其宽度与它们所代表数值成正比。本文展示了如何在垂直条形图基础创建一个水平柱状图。 水平条形图不是简单垂直条形图旋转。...Bar Chart with multiple data sets in SwiftUI SwiftUI 水平条形图 将条形图转换为水平 水平条形图不仅仅是垂直条形图上配置,有一些元素是可以重复使用...几乎相同,只是Bars被放置一个垂直堆栈,而不是水平堆栈。...水平和垂直条形图 一个iPad模拟被用来比较垂直和水平条形图使用,以显示2018年五岁以下儿童死亡率最高国家。...创建垂直条形图时学到技术可以重复使用,但最好将水平条形图视为垂直条形图不同图表。当我们深入到轴等组件时,可以看到两个图表轴线都是一样,但是它们标签和定位在x和y之间是换位

4.7K20

SwiftUI 布局 —— 尺寸(

本文将从布局角度入手,为你揭开盖 SwiftUI 尺寸概念上面纱,了解并掌握 SwiftUI 众多尺寸含义用法;并通过创建符合 Layout 协议 frame 和 fixedSize 视图修饰复制品...这并非意味着尺寸 SwiftUI 不重要,事实恰恰相反,正是由于 SwiftUI 尺寸是一个十分复杂概念,苹果将绝大多数有关尺寸配置和表述都隐藏到了引擎盖之下,刻意对其进行了包装淡化。...VStack、ZStack、List 等布局视图外, SwiftUI ,大量布局容器是以视图修饰形式存在。...由于可以宽度和高度上分别选择不同模式,因此建议模式特指在一个维度上所提供建议内容。 最小化模式 该维度建议尺寸为 0 。...,例如 ZStack ,ZStack 为子视图设置渲染尺寸子视图需求尺寸一致 VStack ,VStack 将根据其父视图提供建议尺寸、子视图是否为可扩展视图、子视图视图优先级等信息

4.6K20

用 Table SwiftUI 下创建表格

具有列( Row )特征 List Table 定义,具备明确( Row )列( Column )概念。...SwiftUI 4.0 一个测试版本( Xcode 14.0 beta (14A5228q) ),Table iPad OS 表现不佳,存在不少 Bug 。...例如:标题数据( 首 )重叠;标题第一列不显示;滚动不顺畅以及某些表现( 高 ) macOS 版本不一致等情况。...Table List 近似点: 声明逻辑接近 LazyVGrid( LazyHGrid )和 Grid 倾向于将数据元素放置于一个单元格( Cell )不同, Table List ...,SwiftUI 会扩展更多样式到 iPadOS 平台 选择 Table 启用选择 List 方式十分类似: struct TableDemo: View { @State var

3.9K30

SwiftUI 布局 —— 尺寸( 下 )

本篇,我们将通过对视图修饰 frame 和 offset 仿制进一步加深对 SwiftUI 布局机制理解,并通过一些示例展示布局时需要注意问题。...相同长相、不同内涵 SwiftUI ,我们可以利用不同布局容器生成看起来几乎一样显示结果。...假设当前设计需求是想将 ButtonView 和 HeartView 视作一个整体进行布局,那么 ZStack 是一个不错选择。...frame 视图修饰本质是对布局容器 _FrameLayout 包装,本例我们将自定义布局容器命名为 MyFrameLayout ,视图修饰命名为 myFrame 。...frame 无论功能上还是实现均有巨大不同,因此 SwiftUI 它们分别对应着不同布局容器。

2.6K40

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

本文将通过一个优化列表视图案例,展现在 SwiftUI 查找问题、解决问题思路,其中也会对 SwiftUI 视图显式标识、@FetchRequest 动态设置、List 运作机制等内容有所涉及... SwiftUI 视图生命周期研究[3] 一文,我对 List 如何对子视图显示进行优化做了一定介绍。...标识( Identity )是 SwiftUI 程序多次更新识别相同或不同元素手段,是 SwiftUI 理解你 app 关键。... SwiftUI 为视图设置显式标识目前有两种方式: ForEach 构造方法中指定 由于 ForEach 视图数量是动态且是在运行时生成,因此需要在 ForEach 构造方法中指定可用来标识子视图...生产中处理方式 本文为了演示 id 修饰符 ForEach 异常状况以及问题排查思路,创建了一个在生产环境几乎不可能使用范例。

9.1K20

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

可以 SwiftUI 创建一个调色板以显示可能颜色。...请注意,色相(Hue) 通常被赋予一个以角度为单位值,表示色环周围角度,值 0 到 360 之间,SwiftUI 使用 0.0 到 1.0 之间值,其中 1.0 表示 360 度。...下图显示了一个个第一基于色调增加不同颜色,第二和第三具有相同色调,分别显示增加饱和度和亮度效果。可以通过将饱和度保持为 0 并调整亮度来定义灰度颜色。...SwiftUI 使用 0 到 1 之间值来表示从 0 到 360 度色调值。以下代码类似于在在 SwiftUI 创建一个环形 Slider环形Slider用于显示色调选项。...第一个选项可能是使用相同色调并更改饱和度或亮度。这对于从较低饱和度到较高饱和度渐变或使用相同色调较暗边框或框架非常有效。下一个选项是通过将色调改变几度来使用相邻或相似的颜色。

2.6K30

Swift 周报 第十四期

以上调整生效后,“我 App”“价格销售范围”部分会随即更新。您可以随时 App Store Connect 更改您 App 和 App 内购买项目的价格 (包括自动续期订阅)。...实时活动功能和 ActivityKit 将包含在今年晚些时候推出 iOS 16.1 。当 iOS 16.1 发布候选版本可用时,您即可将配置了实时活动功能 App 提交至 App Store。...拓展 Swift 可用目标平台 拓展 Swift 可用主机平台 提高 Swift 现有平台上 Toolchain 让 Swift 编译可以现有的平台上工作比如 Linux 和 Windows...SwiftUI Layout 协议——第 2 部分[13] 摘要: 本篇文章是 SwiftUI Layout 协议第二部分介绍,主要讲述 Layout 协议高级布局包含自定义动画、递归布局等功能。...SwiftUIHStack 和 VStack 切换 摘要: 本文介绍了当涉及到水平和垂直变体时( HStack 和 VStack ),我们需要如何在这两者之间动态切换。

3.3K10

SwiftUI - 百代码变十,Swift再创辉煌

而对于开发者来说,新发布 SwiftUI 可能是最吸引人特性, 苹果公司软件工程高级副总裁Craig Federighi演示,我们可以轻松地把一百前端代码缩减到十几行。...这种声明式方式甚至允许使用复杂功能,动画(animation)。只需要几行代码,即可添加动画在任何控件,并且可以使用易于调用特效。...的确,我们平时开发很多时间都浪费了这个方面,然而作为牛逼,我也相信必然会一统江湖 Swift 也是不忍心让开发人员掉入这样SwiftUI 只是一个开始---打开新世界开始 // 声明式语法...当在设计工具工作时,所编辑内容会立刻反映到代码,如果从模拟切换到手机,手机也能立马看到预览效果。 ?...简便动画创建方式 创建平滑动画就像添加一个方法调用一样简单。SwiftUI需要时自动计算和动画转换。

3K40
领券