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

Ask Apple 2022 与 SwiftUI 有关的问答(上)

在单元测试中,很难对 SwiftUI图中的依赖( 符合 DynamicProperty 协议 )进行测试。这也是 Redux-like 框架的优势之一( 将状态从视图中抽离出来,方便测试 )。...阅读 SwiftUI 的动画机制[8] 一文,了解更多有关动画的内容。自适应高度 SheetQ:如何在 iOS16 中呈现与动态内容高度相匹配的 Sheet?...对于非惰性视图( LazyVStack ),一旦 hosting controller 的视图被初始化,onAppear 将被调用。...有关下划线的含义和用法,请参阅 为自定义属性包装类型添加类 @Published 的能力[17] 。...image-20221022135907441为 Stepper 添加快捷键Q:我们如何为 SwiftUI 的 Stepper( 在 MacOS 上 )添加增量和减量操作的快捷键?

12.2K20

SwiftUI图中打开 URL 的若干方法

访问我的博客 www.fatbobman.com[1] 可以获得更好的阅读体验 本文将介绍在 SwiftUI图中打开 URL 的若干种方式,其他的内容还包括如何自动识别文本中的内容并为其转换为可点击链接...image-20220520182722773 SwiftUI 1.0( iOS 13、Catalina ) 在视图中,开发者通常需要处理两种不同的打开 URL 的情况: 点击一个按钮( 或类似的部件...)打开指定的 URL 将文本中的部分内容变成可点击区域,点击后打开指定的 URL 遗憾的是,1.0 时代的 SwiftUI 还相当稚嫩,没有提供任何原生的方法来应对上述两种场景。...NSDataDetector[5] 是 NSRegularExpression 的子类,它可以检测自然语言文本中的半结构化信息,日期、地址、链接、电话号码、交通信息等内容,它被广泛应用于苹果提供的各种系统应用中...视图中打开 URL 的几种方法,不过读者应该也能从中感受到 SwiftUI 三年来的不断进步,相信不久后的 WWDC 2022 会为开发者带来更多的惊喜。

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

SwiftUI TextField进阶——格式与校验

SwiftUI TextField进阶——格式与校验 想获得更好的阅读体验,请访问我的博客 www.fatbobman.com[1] SwiftUI的TextField可能是开发者在应用程序中最常使用的文本录入组件了...本文为【SwiftUI 进阶】系列文章中的一篇,在本文中,我将介绍如何在TextField中实现如下功能: •屏蔽无效字符•判断录入的内容是否满足特定条件•对录入的文本实时格式化显示 textfieldDemo1...在为SwiftUI增加新功能时,要求自己尽量遵守以下原则: •优先考虑能否在SwiftUI原生方法中找到解决手段•确需采用非原生方法,尽量采用非破坏性的实现,新增功能不能以牺牲原有功能为代价(需兼容官方的...第二种思路,则是不使用黑魔法,仅通过SwiftUI的原生方式,在录入文本发生变化时,对文本进行格式化。本文的方案二是该思路的具体实现。...可能的屏蔽字符解决思路 •使用UITextFieldDelegate的textField方法•在SwiftUI的视图中,使用onChange在录入发生变化时进行判断并修改 第一种思路,仍需使用Introspect

8.1K20

探讨 SwiftUI 中的几个关键属性包装器

@State @State 是 SwiftUI 中最常用的属性包装器之一,主要用于在视图内部管理私有数据。它特别适合存储值类型数据,字符串、整数、枚举或结构体实例。...它常用于简单的 UI 组件状态管理,开关状态、文本输入等。 如果数据不需要复杂的跨视图共享,使用 @State 可以简化状态管理。...在构造方法中赋值时,需通过 _ 下划线访问 @State 的原始值并进行赋值。...详见 避免 SwiftUI 视图的重复计算[7]。 如果不需要在当前视图或在子视图中(通过 @Binding )修改值,无需使用 @State。...引入 @StateObject 意味着所有相关操作都在主线程上进行( SwiftUI 会隐式为视图添加 @MainActor),包括异步操作。应将需要在非主线程上运行的代码应该从视图代码中剥离。

19210

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

前言在应用中显示应用图标和版本是为用户提供快速识别应用版本和变体的好方法,无论是内部用户(测试人员或利益相关者)还是外部用户。...在本文中,我将展示如何创建一个可访问的 SwiftUI 视图,既能显示应用图标和版本,又能在各种文本大小和外观下看起来都很好:获取应用图标构建视图的第一步是从主包中获取应用图标。...我们在 Image 视图中显示应用图标。但是,应用图标只能作为命名的 UIImage 检索,所以我们需要先创建 UIImage,然后再转换为 SwiftUI Image。...AppVersionProvider.appVersion(), appIcon: AppIconProvider.appIcon() ) }}总结在这篇文章中,我们学习了如何在...SwiftUI 应用中显示应用图标和版本信息。

10500

Ask Apple 2022 与 SwiftUI 有关的问答(下)

本文对本次活动中与 SwiftUI 有关的一些问答进行了整理,并添加了一点个人见解。本文为下篇。访问我的博客 www.fatbobman.com[1] 可以获得更好的阅读体验以及最新的更新内容。...Swiftcord[12] 的代码展示了如何在 SwiftUI 下实现倒置列表。阅读 优化在 SwiftUI List 中显示大数据集的响应效率[13] 一文,了解苹果工程师推荐的方法。...TextField 内容验证Q:如何实现一个只接受数字的 SwiftUI TextField,小数是允许的。A:向文本字段提供 FormatStyle 以实现自动将文本转换为各种数字。...将背景扩展到安全区域Q:如果我有一个自定义的容器类型,可以接受一个顶部和底部的视图,是否有办法让 API 的调用者将所提供的视图的背景扩展到安全区域内,同时将内容( 文本或按钮 )保留在安全区域内?...macOS APIQ:对于运行 Monterey 的 Mac,能否如何在 SwiftUI 中实现下面需求的建议:打开一个窗口在该窗口中初始化数据找到所有打开的窗口确定一个窗口是否打开从不在该窗口的视图中关闭一个窗口

14.7K30

在 iOS 16 中用 SwiftUI Charts 创建一个折线图

前言 苹果在 WWWDC 2022 上推出了 SwiftUI 图表,这使得在 SwiftUI图中创建图表变得异常简单。图表是以丰富的格式呈现可视化数据的一种很好的方式,而且易于理解。...系列文章 如何在 SwiftUI 中创建条形图 SwiftUI 中的水平条形图 在 iOS16 中用 SwiftUI 图表定制一个线图 在 Swift 图表中使用 Foudation 库中的测量类型 简单折线图...这些可以通过将图表标记从LineMark改为其他类型的标记(BarMark)来生成条形图。...创建第二个系列,即前一周的步数,并将这两个系列添加到折线图中。...Charts 中创建一个包含两个系列步数数据的折线图 第一次尝试在 SwiftUI Charts 中创建一个包含两个系列步数数据的折线图 显示步数系列 在折线图中显示多个基于工作日的步数系列 最初尝试在折线图中显示多组数据的问题是

3.6K20

SwiftUI中使用UIKit视图

SwiftUI中使用UIKit视图 想获得更好的阅读体验可以访问我的博客www.fatbobman.com,或点击下方的阅读原文 已迈入第三个年头的SwiftUI相较诞生初始已经提供了更多的原生功能...本文将通过对UITextField的包装来讲解以下几点: •如何在SwiftUI中使用UIKit视图•如何让你的UIKit包装视图具有SwiftUI风格•在SwiftUI使用UIKit视图需要注意的地方...当UIViewRepresentable视图中的注入依赖发生变化时,SwiftUI会调用updateUIView。...•处理UIKit视图中的复杂逻辑在UIKit开发中,通常会将业务逻辑放置在UIViewController中,SwiftUI没有Controller这个概念,视图仅是状态的呈现。...在makeUIView中添加如下语句,此时文本输入框的尺寸就和预期一致了: textfield.setContentHuggingPriority(.defaultHigh, for:

8.1K20

何在 SwiftUI 中创建条形图

系列文章 如何在 SwiftUI 中创建条形图 SwiftUI 中的水平条形图 在 iOS 16 中用 SwiftUI Charts 创建一个折线图 在 iOS16 中用 SwiftUI 图表定制一个线图...很容易将部分内容提取到子视图中,以便每个部分都很小且易于维护。从将包含 BarChartView 以及可能的其他文本或数据的视图开始。...数据使用国家名称在条形图中绘制。...这个值是偏移的,所以文本不会离条形图的顶部太近。数据名称的字体大小和字重也可以被设置。向国家名称那样较长的文本,显示出条形图下面的文本将条形图推到了线外。...文本视图的宽度被限制在条形图宽度的范围内,而且条形图的标签文本会被截断,条形图的文本视图也被限制在条形宽度的范围内,并且文本可以被隐藏起来。

5.1K10

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

欢迎大家在 Discord 频道[2] 中进行更多地交流将某个视图在父视图中居中显示是一个常见的需求,即使对于 SwiftUI 的初学者来说这也并非难事。...需求实现下图中展示的样式:在彩色矩形视图中居中显示单行 Textimage-20220829142518962填充物Spacer最常见也是最容易想到的解决方案。...,VStack、HStack 在为其添加 spacing 时将可能出现异常 ( 下图中 spacing 的分配不均匀。...我为本文这种通过多种方法来解决一个问题的方式添加了【小题大作】标签,目前使用该便签的文章还有:在 Core Data 中查询和使用 count 的若干方法[6]、在 SwiftUI图中打开 URL...视图中打开 URL 的若干方法: https://www.fatbobman.com/posts/open_url_in_swiftUI/[8] Twitter: https://twitter.com

6.6K40

何在Xcode下预览含有Core Data元素的SwiftUI视图

何在Xcode下预览含有Core Data元素的SwiftUI视图 从SwiftUI诞生之日起,预览(Canvas Preview )一直是个让开发者又爱又恨的功能。...结合两年来我在SwiftUI中使用Core Data的经验和教训,我们将在本文中探讨: •导致SwiftUI预览崩溃的部分原因•如何在之后的开发中避免类似的崩溃出现•如何在Xcode中安全可靠地预览含有...SwiftUI提供的managedObjectContext环境值为在视图中使用或操作Core Data元素提供了基础和便利。...由于前文中提到的SwiftUI App life cycle的独特性,你无法在根视图中使用单例来注入持久化上下文。...SwiftUI通常采用Redux的开发模式,通过将获取到的Core Data数据转换成标准的Swift结构从而避免在视图中使用托管对象上下文或托管对象。

5.1K10

SwiftUI 中用 Text 实现图文混排

上述特性有一个基本要求 —— 换行操作是在单一 Text 视图中进行的。...Text ,还可以添加 Image、Date 等众多类型。...从上图中可以看出,动态类型仅对文本有效,Text 中的图片尺寸并不会发生改变。在使用 Text 实现图文混排时,如果图片不能伴随文本的尺寸变化而变化,就会出现上图中的结果。...使用 SwiftUI 提供的 @ScaledMetric 属性包装器,可以创建能够跟随动态类型自动缩放的数值。relativeTo 参数可以让数值与特定的文本风格的尺寸变化曲线相关联。...一个有关图文混排的问题前几天在聊天室[8]中,一个朋友询问 SwiftUI 是否能实现下图中 tag( 超市标签 )+ 商品介绍的版式效果。

4.2K30

SwiftUI 状态管理系统指南

前言 SwiftUI与苹果之前的UI框架的区别不仅仅在于如何定义视图和其他UI组件,还在于如何在整个使用它的应用程序中管理视图层级的状态。...属性状态 由于SwiftUI主要是一个UI框架(尽管它也开始获得用于定义更高层次结构(应用程序和场景)的API),其声明式设计不一定需要影响应用程序的整个模型和数据层——而只是直接绑定到我们各种视图的状态...这是因为我们不只是将普通的String值传入这些文本字段,而是与我们的State包装的属性本身绑定。...然而,虽然建立一个将所有的状态都保存在其各种视图中的应用程序是肯定可行的,但从架构和关注点分离的角度来看,这通常不是一个好主意,而且很容易导致我们的视图变得相当庞大和复杂。....environmentObject(theme) } } 请注意,我们不需要将上述修改器应用于将使用我们的环境对象的确切视图——我们可以将其应用于我们的层次结构中任何在其之上的视图

5K20

高级 SwiftUI 动画 — Part 1:Paths

我想到了一些大的例外情况:路径(paths)、变换矩阵(matrices)和任意的视图变化(例如,文本图中文本、渐变视图中的渐变颜色或停顿,等等)。在这种情况下,框架不知道该怎么做。...你只需要添加 .drawingGroup() 修饰符: FlowerView().drawingGroup() 根据 WWDC 2019, Session 237(用SwiftUI构建自定义视图):绘图组是一种特殊的渲染方式...如果你想尝试一下,但你的形状还没有复杂到让设备挣扎的地步,添加一些渐变和阴影,你会立即看到不同。 接下来有什么内容? 在本文的第二部分,我们将学习如何使用 GeometryEffect 协议。...与 Paths 一样,SwiftUI 没有关于如何在两个不同的变换矩阵之间转换的内置知识。GeometryEffect将有助于我们这样做。 目前,SwiftUI 没有关键帧功能。...在文章的第三部分,我们将介绍AnimatableModifier,这是一个非常强大的工具,它可以让我们对视图中任何可以变化的东西进行动画处理,甚至是文本

3.7K20

掌握 SwiftUI 的 Safe Area

SwiftUI 同时提供了一些方法和工具让开发者对安全区域有所控制。 本文将探讨如何在 SwiftUI 中获取 SafeAreaInsets、将视图绘制到安全区域之外、修改视图的安全区域等内容。...对于视图层次上的其他视图,safeAreaInesets 只反映视图中被覆盖的部分。如果一个视图可以完整地放置在父视图的安全区域中,该视图的 safeAreaInsets 为 0。...也可以使用下面的代码,进一步了解 safeAreaInsets 在各个层级视图中的状况。...•all(默认)上述两种安全区域划分的合集 iOS 13 并没有提供键盘自动避让功能,开发者需要编写一些额外的代码来解决软键盘不恰当遮盖视图( TextField )的问题。...Circle().fill(.regularMaterial).frame(width: 100, height: 100).padding(.vertical, 100) // 文本输入

7.5K31

SwiftUI 与 Core Data —— 数据定义

遗憾的是,托管对象对于以值类型为主的 SwiftUI 来说并不算友好,因此,不少开发者都会在视图中将托管对象实例转换成一个结构体实例以方便接下来的操作( 如何在 Xcode 下预览含有 Core Data...元素的 SwiftUI 视图[4])。...Xcode 的数据模型编辑器中创建实体 C_Group( 包括与之有关系的其他实体 C_Task )image-20221128124420013如有必要可以通过更改托管对象 C_Group 代码( 或添加计算属性...托管对象的其他优势在视图中用结构体直接表示数据固然方便,但我们仍不能忽略托管对象的其他优势。..._wrappedValue = wrappedValue }}现在,在 SwiftUI 的视图中,MockGroup 将具备与 C_Group 几乎一样的能力,唯一不同的是,它是通过一个 TodoGroup

2.4K40

SwiftUI 4.0 的全新导航系统

>, @ViewBuilder destination: () -> Destination) 上述两种方法有一定的局限性: 需要逐级视图进行绑定,开发者想实现返回任意层级视图则需要自行管理状态 在声明...由于无需在 NavigationLink 中指定目标视图,因此无须创建多余的视图实例 对由同一类型的值驱动的目标进行统一管理( 可以将堆栈中所有视图的 NavigationLink 处理程序统一到根视图中...不同的角色将让 toolbar 的外观和排版有所不同( 设备而异 )。...到了 SwiftUI 4.0 版本后,SwiftUI 已经将其真正的视为了 Button 。...相当一部分开发者由于版本适配的原因并不会使用新的 API ,因此,每个人都需要认真考虑如下问题: 如何从新 API 中获得灵感 如何在老版本中运用编程式导航思想 如何让新老版本的程序都能享受系统提供的便利

10.2K62
领券