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

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

在单元测试,很难 SwiftUI 视图中依赖( 符合 DynamicProperty 协议 )进行测试。这也是 Redux-like 框架优势之一( 将状态从视图中抽离出来,方便测试 )。...在使用 environmentObject 情况,如何避免创建实例视图被重新计算Q:如何在避免重新计算顶层视图 body 情况,在不同子树两个子视图之间共享状态( 例如 ObservableObject...隐式动画和显式动画Q:你好!是否有其他方法可以直接根据状态变化对视图进行动画处理而不使用 onChange 修饰器?我代码是这样。....阅读 SwiftUI 动画机制[8] 一文,了解更多有关动画内容。自适应高度 SheetQ:如何在 iOS16 呈现与动态内容高度相匹配 Sheet?...在常规宽度,我们在详细视图中有一个带有导航堆栈侧边栏。在紧凑宽度,我们有一个标签栏,每个标签都有一个导航堆栈。

12.2K20

SwiftUI 4.0 全新导航系统

访问我博客 www.fatbobman.com[1] 可以获得更好阅读体验。欢迎大家在 Discord 频道[2] 中进行更多地交流 长久以来,开发者 SwiftUI 导航系统颇有微词。...详情请参阅 在 SwiftUI iPad 进行适配[3] NavigationSpiteView 已经解决了上述问题,它现在可以同 NavigationStack 进行完美的合作。...SwiftUI 4.0 之前版本上使用类似的功能,可以参考我在 用 NavigationViewKit 增强 SwiftUI 导航视图[4] 一文实现方法 其他增强 除了上述功能, 新导航系统还在很多其他地方也进行了增强...相当一部分开发者由于版本适配原因并不会使用新 API ,因此,每个人都需要认真考虑如下问题: 如何从新 API 获得灵感 如何在老版本运用编程式导航思想 如何让新老版本程序都能享受系统提供便利... iPad 进行适配: https://www.fatbobman.com/posts/swiftui-ipad/ [4] 用 NavigationViewKit 增强 SwiftUI 导航视图

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

用NavigationViewKit增强SwiftUI导航视图

由于SwiftUI原生提供导航手段能力有限,因此在之前版本,NavigationView总是使用不是那么顺手。...•SwiftUI原生风格扩展功能调用方法尽可能同原生SwiftUI方式类似 请访问Github下载NavigationViewKit[4] NavigationViewManager 简介 开发者NavigationView...由于NavigationgViewManager支持多导航视图管理,因此需要为每个受管理导航视图进行注册。...主要用途是处理Deep Link,绝大多数时间都不是在视图代码调用。...视图中支持SwiftUI原生所有定义,例如toolbar、navigationTitle等。 目前在启用转场动画时,title和toolbar会在转场动画后才显示,观感稍有不足。日后尝试解决。

3.2K20

SwiftUI TextField进阶——格式与校验

本文为【SwiftUI 进阶】系列文章一篇,在本文中,我将介绍如何在TextField实现如下功能: •屏蔽无效字符•判断录入内容是否满足特定条件•录入文本实时格式化显示 textfieldDemo1...SwiftUI修饰方法) 以上原则,在SheetKit——SwiftUI模态视图扩展库[3]和用NavigationViewKit增强SwiftUI导航视图[4]均有体现。...其他需要注意问题 在使用上面的思路进行实际编程前,我们还需要考虑其他几个问题: 本地化 本文提供演示代码[6]实现了Int和Double两种类型实时处理。...由于onChange是在文字发生变化后才会调用,因此,方案二会导致视图二度刷新,不过考虑到文字录入应用场景,性能损失可以忽略( 使用属性包装器进一步对数值同字符串进行链接,可能会进一步增加视图刷新次数...不过除非SwiftUI背后实现逻辑进行了较大修改,否则方案一在最近几个版本仍会正常运行,而且方案一可以支持更早版本SwiftUI

8.1K20

掌握 SwiftUI Safe Area

掌握 SwiftUI Safe Area 访问我博客 www.fatbobman.com[1] 可以获得更好阅读体验 Safe Area(安全区域)是指不与导航栏、标签栏、工具栏或其他视图控制器提供视图重叠内容空间...在 UIKit ,开发者需要利用 safeAreaInsets 或 safeAreaLayoutGuide ,才能确保将视图放置在界面可见部分。 SwiftUI 对上述过程进行了彻底简化。...本文将探讨如何在 SwiftUI 获取 SafeAreaInsets、将视图绘制到安全区域之外、修改视图安全区域等内容。...从 iOS 14 开始,SwiftUI 计算视图安全区域时,将软键盘在屏幕上覆盖区域(iPadOS ,将软键盘缩小后键盘覆盖区域将被忽略)也一并进行考虑。...NavigationView ,还需要对底部状态条动画做更加精细地处理

7.5K31

Ask Apple 2022 与 SwiftUI 有关问答(

开发者即使无法实现这样布局容器,也应对各种尺寸需求定义有清晰理解。在 SwiftUI 布局 —— 尺寸( 上 )[8] 一文建议尺寸几种模式都进行了介绍。...Swiftcord[12] 代码展示了如何在 SwiftUI 实现倒置列表。阅读 优化在 SwiftUI List 显示大数据集响应效率[13] 一文,了解苹果工程师推荐方法。...目前 SwiftUI 没有 API 可以限制用户在字段输入字符。很希望苹果能够继续扩展基于 FormatStyle 解决方案,让其可以实时输入内容进行校验。...SwiftUI 当前缺乏动画完成后回调机制。在动画不复杂情况,可以通过创建一个符合 Animatable 协议 ViewModifier 来同步观察动画进程。...Q&A ( 集锦 - 简体中文 )下文中问题来自开发者与苹果工程师在【 集锦 - 简体中文 】频道进行中文讨论( 没有出现在英文 SwiftUI 频道 )。我直接进行了复制粘贴。

14.7K30

高级 SwiftUI 动画 — Part 1:Paths

在我们进入这些隐藏瑰宝之前,我想一些基本 SwiftUI 动画概念做一个非常快速总结。只是为了让我们能有共同语言,请耐心听我说。...(sides)参数进行动画处理: PolygonShape(sides: isSquare ?...完整代码可以在文章顶部链接 gist 文件 Example2 中找到。 设置多个参数动画 很多时候,我们会发现自己需要对一个以上参数进行动画处理。单一Double是不够。...它将打开改变我们视图和动画新方法大门。与 Paths 一样,SwiftUI 没有关于如何在两个不同变换矩阵之间转换内置知识。GeometryEffect将有助于我们这样做。...在文章第三部分,我们将介绍AnimatableModifier,这是一个非常强大工具,它可以让我们对视图中任何可以变化东西进行动画处理,甚至是文本!

3.7K20

解析 SwiftUI 两处由状态更新滞后引发严重 Bug

众所周知,SwiftUI 是一个响应式框架,这意味着,当数据源发生变化时,框架会自动更新视图。同样,当我们想调整视图显示时,应直接状态进行修改。...但是,SwiftUI 一些系统控件并没有完全遵循响应式设计原则,由此在某些情况会出现严重错误,影响用户体验,并使开发者无所适从。...通过手势取消 Sheet 后,快速右滑导航容器会导致应用锁死这是一个在 SwiftUI 所有版本存在错误,你可以在众多论坛或聊天室里看到不少开发者都在寻找解决方法。...为了改善 AttributeGraph 效率并减少其占用空间,SwiftUI 会在一些特定情况进行清理和维护(例如通过 CFRunLoopObserverCreate 监听 Runtime 空闲时机...随着版本提高,SwiftUI 功能也确实得到了相当程度增加。不过,即使在最新版本,在一些 UIKit(AppKit)进行二次包装控件,仍有不少细节处理不到位问题。

590110

掌握 Transaction,实现 SwiftUI 动画精准控制

同时,在 SwiftUI 动画系统,有关 Transaction 解释很少,无论是官方资料还是第三方文章,都没有其运作机制进行系统阐述。...本文将通过探讨 Transaction 原理、作用、创建和分发逻辑等内容,告诉读者如何在 SwiftUI 实现更加精准动画控制,以及需要注意其他问题。...欢迎大家在 Discord 频道[2] 中进行更多地交流 Transaction 是什么 transaction 是一个值,包含了 SwiftUI处理当前状态变化时需要了解上下文,其中最重要是用于计算插值动画函数...使用显式动画屏蔽系统组件动画 在 iOS 17 SwiftUI 会让大多数系统组件( Sheet、FullScreeCover、NavigationStack、Inspector 等)在实现动画时...如果你使用例如 UIViewRepresentable 方式 UIKit 或 AppKit 组件进行包装,则可以在 update 方法获取当前 transaction。

44720

肘子 Swift 周报 #009

作为一个双语博客,我计划在首页添加一个简单逻辑,根据访客浏览器语言设置自动跳转到相应语言页面。在测试过程,我发现不同浏览器系统语言列表处理方式各不相同,这在前端开发是一个常见挑战。...尽管大多数情况,HTML、CSS 和 JavaScript 标准在不同浏览器上表现一致,但仍有些微差异。...它可以解决一些之前无法处理处理起来比较困难动画异常。...本文将介绍 geometryGroup() 概念、用法,以及在低版本 SwiftUI ,在不使用 geometryGroup() 情况如何处理异常。...初探 SwiftUI Link[9] Kyle-Ye[10] Link 是 SwiftUI 一个组件,通过它可以导航到一个指定 URL。

12110

肘子 Swift 周报 #005

Tracking( 持久化历史跟踪 )会向订阅者发送提醒,开发者可以借此机会对同一数据库进行修改做出响应,包括其他应用、组件(同一个 App Group)和批处理任务。...然而,在某些情况,开发者可能希望自行响应持久化历史跟踪事务,以获得更多灵活性。本文将介绍如何在 SwiftData 通过持久化历史跟踪观察特定数据变化方法。...Advanced SwiftUI Animations – Part 7: PhaseAnimator[15] Javier[16] 在 WWDC 2023 SwiftUI 动画功能得到了显著增强...在这篇文章,Javier 阶段动画使用方法进行了详尽介绍,他还指出了在阶段动画中使用 Text 视图可能出现一个潜在问题,并提供了解决方案。...Creating Shortcuts with App Intents[19] Mark Struzinski[20] 快捷方式允许用户在不启动和导航到特定屏幕以执行任务情况与你应用程序进行交互。

22850

苹果全新UI框架来了!可视化编程,自动化减少20%代码量

SwiftUI通过4种方式,解决了上述问题: 用一个新声明式UI结构,定义了布局外观和工作方式 更新UI预览会自动生成新Swift代码,反之,更改Swift代码也会更新UI预览 Swift任何绑定例如有效...outlets和操作,都会在编译时进行检查,因此在运行时不会出现UI失败风险 虽然背后使用来自UIKit和AppKit控件,但SwiftUI凌驾于二者之上,能够有效地使底层UI框架成为一个实现细节,...感受一SwiftUI代码风格 ? Github一个repo整理了在WWDC 2019发布SwiftUI布局框架一些官方示例: SwiftUI Essentials 创建和组合视图: ?...创建列表和导航栏: ? 处理用户输入: ? Drawing and Animation 绘图路径和形状: ? 动画视图和过渡 ? App Design and Layout 复杂界面组合: ?...你SwiftUI有哪些期待呢?敬请留言吧! 参考链接: https://github.com/Jinxiansen/SwiftUI/blob/master/README_CN.md

5.3K20

【visionOS】从零开始创建第一个visionOS程序

将你应用扩展到沉浸式空间 从熟悉基于窗口体验开始,向人们介绍您内容。从那里,添加特定于visionOSSwiftUI场景类型,卷和空间。...SwiftUI提供了这些标准手势内置支持,所以你大部分应用输入都依赖于它们。当你想超越标准手势,使用ARKit创建自定义手势。...创建你Xcode投影页面链接 在Xcode中选择File >新比;项目。导航到模板选择器visionOS部分,并选择App模板。当出现提示时,为项目指定一个名称以及其他选项。...你也可以用它来为你内容构建和测试自定义RealityKit动画和行为。 修改现有的窗口页面链接 使用标准SwiftUI视图构建初始接口。...许多SwiftUI视图自动处理交互——你所要做就是提供在交互发生时运行代码。

71640

Swift 周报 第四十二期

SwiftUI 作用域动画 话题讨论: 那个活在记忆帅气少年,已慢慢变成了大叔模样。...然而,有一些情况类型擦除是不幸,因为它不允许在可能且有必要处理所有错误狭窄位置进行更精确错误类型化,或者在类型擦除成本很高情况。...以至于在某些情况,用户认为即使是单个表达式也必须包含在闭包。do 表达式将提供更清晰习惯用法来这些进行分组。...总体而言,我们目标是在 Swift 引入更细致模式匹配,允许在不消耗值情况进行借用和变异,并探索这些增强功能在各种语言结构( switch 语句和条件)含义。...SwiftUI 作用域动画[10] 摘要: 文章介绍了在 SwiftUI 中使用作用域动画新方法。首先,我们回顾了以前在 SwiftUI 处理动画方式,并指出了其中一些缺点。

20510

解析 SwiftUI 两处由状态更新滞后引发严重 Bug

众所周知,SwiftUI 是一个响应式框架,这意味着,当数据源发生变化时,框架会自动更新视图。同样,当我们想调整视图显示时,应直接状态进行修改。...但是,SwiftUI 一些系统控件并没有完全遵循响应式设计原则,由此在某些情况会出现严重错误,影响用户体验,并使开发者无所适从。...通过手势取消 Sheet 后,快速右滑导航容器会导致应用锁死 这是一个在 SwiftUI 所有版本存在错误,你可以在众多论坛或聊天室里看到不少开发者都在寻找解决方法。...为了改善 AttributeGraph 效率并减少其占用空间,SwiftUI 会在一些特定情况进行清理和维护(例如通过 CFRunLoopObserverCreate 监听 Runtime 空闲时机...随着版本提高,SwiftUI 功能也确实得到了相当程度增加。不过,即使在最新版本,在一些 UIKit(AppKit)进行二次包装控件,仍有不少细节处理不到位问题。

26720

SwiftUI 动画机制

SwiftUI 动画处理逻辑了解不够深入是造成上述困扰主要原因。本文将尝试 SwiftUI 动画机制做以介绍,以帮助大家更好地学习、掌握 SwiftUI 动画,制作出满意交互效果。...当状态改变导致视图树分支发生变化时,SwiftUI 将使用其包裹动画部件对视图进行动画处理。 使用转场同样需要满足 SwiftUI 动画三要素。...由于两个分支视图在转场时会同时出现,因此只有在布局容器才会正确处理转场动画。Group 只能对其子元素进行统一设置,不具备处理两个分支视图同时出现情况(会有一个视图分支转场丢失)。...控件动画问题 SwiftUI 不少控件是采用 UIKit( AppKit )控件进行封装实现,当前动画处理并不到位。...在 ViewBuilder 研究() —— 从模仿中学习[9] 一文,我们展示了 SwiftUI Text 是如何处理扩展方法

14.6K40

SheetKit——SwiftUI模态视图扩展库

因此,在此种情况,通常我们会将所有的模态视图集中管理起来,统一调用。请参阅我之前文章——在SwiftUI,根据需求弹出不同Sheet[3]。...•新半高模态视图在WWDC 2021,苹果为大家带来了期待已久半高模态视图。或许推出比较仓促,这种很受欢迎交互方式并没有提供SwiftUI版本,仅支持UIKit。...SheetKitpresent和dismiss动画都是可以关闭(尤其适合于Deep link场景)。...更多信息请参阅如何在SwiftUI实现interactiveDismissDisabled[5] SheetKitinteractiveDismissDisabled为了兼容bottomSheet.../posts/swiftui-multiSheet/ [4] 源地址: https://github.com/fatbobman/SheetKit.git [5] 如何在SwiftUI实现interactiveDismissDisabled

2.9K20

Swift 周报 第十期

为了避免这种情况,该提案要求在调用显式地作为任何 P 类型注释,其中当前可以表达返回类型将丢弃被类型擦除原始关联类型约束,提案示例所示: protocol P { associatedtype...SE-0362: 即将到来语言改进逐渐采用[13] 状态:已接受Swift 6 积累了许多语言有源码兼容性影响改进,从而在以前语言模式(Swift 4.x 和 Swift 5.x)默认情况无法启用它们...Swift论坛 SwiftUI 新功能[17] 围绕 WWDC2022-10052 内容进行讨论 Swift 正则表达式[18] 围绕 WWDC2022-110357 内容进行讨论 SwiftUI...这个 API 可以根据数组某个特定元素进行排序。 推荐博文 SwiftUI 动画系列,文章结合动画 Gif 原图和源码为案例,深入探讨了如何创建应用 SwiftUI 动画。...SwiftUI 动画进阶 — Part4:TimelineView 摘要: 前三篇高级 SwiftUI 动画是作者在实战总结内容。本篇文章,我们将详细地探索 TimelineView。

2.1K00

肘子 Swift 周报 #032|不要等到遇到障碍时才意识到无障碍重要性

Debugging Animations ( 调试 SwiftUI 动画 )[10] objc.io[11] 在 SwiftUI 动画由状态变化触发。...系统根据开发者设置动画函数,为变化组件创建状态插值。然而,开发者无法在动画过程中进行干预,比如在特定位置暂停动画。...Thomas Durand 在本文中探讨了如何在引入新功能同时确保 API 向后兼容性,阐述了一系列策略版本控制和向后兼容变更,确保不同版本应用能平滑过渡并减少用户干扰。...文章中提到示例和测试都基于 Vapor 框架进行说明,展现了如何处理 API 逐步演化而不牺牲旧版本应用功能性。...在这篇文章,David 分享了他即将到来 2024 年 WWDC 期待,以及他多年来参与这一活动深刻反思。

10810

高级 SwiftUI 动画 — Part 2:GeometryEffect

前言 在本系列第一部分,我介绍了Animatable协议,以及我们如何使用它来为路径制作动画。接下来,我们将使用一个新工具: GeometryEffect,用同样协议变换矩阵进行动画处理。...如果你没有读过第一部分,也不知道Animatable协议是什么,你应该先读一。或者如果你只是GeometryEffect感兴趣,不关心动画,你可以跳过第一部分,继续阅读本文。...完整代码可在本页面顶部链接gist文件 实例6 获得。 动画反馈 在下一个例子,我将向你展示一个简单技术,它将使我们视图效果动画进展做出反应。...每当我们视图旋转到足以向我们展示另一面时,一个布尔绑定将被更新。 通过绑定变量变化做出反应,我们将能够替换正在旋转动画过程视图。这将创造一种错觉,即视图有两个面。...在这个例子,我们效果将通过一个任意路径移动一个视图。这个问题有两个主要挑战: 1.如何获取路径特定点坐标。 2.如何在通过路径移动时确定视图方向。

1.3K30
领券