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

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

SwiftUI Overlay Container[1] 是一个用于 SwiftUI 视图容器组件。一个可定制、高效、便捷视图管理器。... SwiftUI 中,描述视图已经变得十分容易,因此我们完全可以将上述场景中显示逻辑提炼出来,创建出一个可以覆盖更多使用场景库,帮助开发者组织视图显示风格和交互逻辑。...创建容器 指定视图上层创建一个视图容器,此容器尺寸同其附着视图尺寸一致: VStack{ // your view } .overlayContainer("containerA", containerConfiguration...所有SwiftUI 视图都可以容器内显示。...animation SwiftUI 视图外使用 如果想在 SwiftUI 视图之外调用容器管理器,可以直接调用 ContainerManager 单例: let manager = ContainerManager.share

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

我庆幸果断放弃了SwiftUI:它还不够成熟

2019 年 WWDC 大会上,苹果推出了一个全新 SwiftUI 框架,这是一个现代化 UI 界面编码结构,它是基于 Swift从头开始构建。...跟其他创作工具一样,这款检查器功能就是选定一个对象,并把可检查对应属性显示一个临时用户界面元素当中。...首先,由可选对象提供视图每次重绘时都是完全重新创建。我虽然通过缓存稍稍提升了性能表现,但实际体验仍然非常糟糕。事实证明,SwiftUI 检查器视图就是没法提供合理重绘速度。...但上图展示效果其实是 AppKit 中完成,因为我 SwiftUI 一直实现不了预期功能。大家应该注意到了,中间 SpriteKit 视图上有三个按钮(分别是 +、200% 和 -)。...我刚开始以为是因为地图编辑器 SpriteKit 主视图仍在后台渲染。所以我尝试工作表显示出来后禁用渲染,但结果没有任何改变。 变更从一种环境传播至另一环境时,我也遇到了类似的延迟问题。

4.9K20

SwiftUI水平条形图

Bar Chart with multiple data sets in SwiftUI SwiftUI水平条形图 将条形图转换为水平 水平条形图不仅仅是垂直条形图上配置,有一些元素是可以重复使用...YaxisHView视图,用于水平条形图上显示Y轴和条形图中数据类别。...更新X轴 同样,创建了一个XaxisHView视图显示水平条形图X轴,并使用与垂直条形图Y轴类似的代码来布置刻度线和刻度值。...水平条形图中,显示条形图上数值并隐藏X轴可以使图表更简洁。 显示和隐藏水平条形图上元素 结论 创建水平条形图SwiftUI代码与创建垂直条形图代码不同。...这可能是将这些组件分解成更小SwiftUI视图并通过组合来重用原因。

4.8K20

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

Ask Apple 为开发者与苹果工程师创造了 WWDC 之外进行直接交流机会。本文对本次活动中与 SwiftUI 有关一些问答进行了整理,并添加了一点个人见解。本文为上篇。...我是 SwiftUI 新手。我问题是关于场景。几乎所有教程和示例代码库中,只使用了一个 WindowGroup 场景,所有内容都嵌套在 ContentView 中。...在有些情况下,我想根据视图是否折叠来做决定( 例如,如果展开,详细视图显示一条信息,如果折叠,则显示一个警告或其他指示 )。...A:onAppear 和 task 都是我们第一次视图上运行 body 之前调用。对于你用例,它们在行为上是等同。...这就涉及到了所有符合 DynamicProperty 协议属性包装器一个特点:视图生存期内仅有第一次初始化实例会与视图创建关联。详细请阅读 避免 SwiftUI 视图重复计算[22] 。

12.2K20

WWDC 23 ,SwiftUI 5 和 SwiftData 初印象

如果你打算开发 iOS 17+ 应用,那么就应该马上抛弃 @ObservableObject 这样声明方式。 由于一个系统中存在了两种不同数据源声明逻辑,这也给初学者带来了更多困扰。...,直接定位到滚动视图特定位置,只能使用一次 )、全新滚动条控制( 闪烁 )、可自定义行视图滚动区域顶端和显示区域显示状态( 例如可用其实现类似 watchOS 中滚动到顶端子视图缩小视觉效果...这是我目前整理一些有关 SwiftData 问题和注意事项( 原文发表推文中,没有进行更系统归纳): 尚不支持公共和共享数据云同步 在当前版本中,通过其他上下文(ModelContext)创建数据并不会自动合并到视图上下文中...com.apple.CoreData.ConcurrencyDebug 1 后,即使 Context 中使用 transaction 尝试保持线程一致,仍会强制报错(即使是一个新创建 actor...尚未完全) 所有针对 Core Data 启动参数目前同样适用 modelContext 自动保存有问题,当前仍应调用 save 方法 与 Core Data Stack 混用时,Core Data

1.1K20

SwiftUI 与 Core Data —— 安全地响应数据

也就是说,如果一个用于显示托管对象实例数据视图被销毁了,那么假如没有其他视图或代码引用视图显示托管对象实例,托管上下文将从内存中将这些数据占用内存释放掉。..., formatter: itemFormatter)")因此 ContentView ForEach 中,item 并不会被视为一个可以引发视图更新 Source of truth ( 通过...假设我们不限定转换过程运行线程,备选值方式对于由视图上下文创建托管对象实例仍将有效( 但有可能会出现其它线程错误 )。....now) } }}coreData-optional-demo4_2022-12-12_14.20.17.2022-12-12 14_21_06视图之外传递值类型在上节代码中,...,为了确保线程安全,托管对象只应在视图之间进行传递,同时用于视图显示数据最好也只视图之内进行获取。

3.3K20

WWDC 23 ,SwiftUI 5 和 SwiftData 初印象

欢迎大家 Discord 频道[2] 中进行更多地交流 SwiftUI 如果说从 SwiftUI 1.0 到 4.0 每年升级是一种小修小补行为,那么今年苹果在 SwiftUI 5.0 上做出努力至少算得上是中期改款了...如果你打算开发 iOS 17+ 应用,那么就应该马上抛弃 @ObservableObject 这样声明方式。 由于一个系统中存在了两种不同数据源声明逻辑,这也给初学者带来了更多困扰。...,直接定位到滚动视图特定位置,只能使用一次 )、全新滚动条控制( 闪烁 )、可自定义行视图滚动区域顶端和显示区域显示状态( 例如可用其实现类似 watchOS 中滚动到顶端子视图缩小视觉效果...这是我目前整理一些有关 SwiftData 问题和注意事项( 原文发表推文中,没有进行更系统归纳): 尚不支持公共和共享数据云同步 在当前版本中,通过其他上下文(ModelContext)创建数据并不会自动合并到视图上下文中...com.apple.CoreData.ConcurrencyDebug 1 后,即使 Context 中使用 transaction 尝试保持线程一致,仍会强制报错(即使是一个新创建 actor

36910

SwiftUI 4.0 全新导航系统

: 由于无需 NavigationLink 中指定目标视图,因此无须创建多余视图实例 对由同一类型值驱动目标进行统一管理( 可以将堆栈中所有视图 NavigationLink 处理程序统一到根视图中...动态控制多栏显示状态 另一个之前困扰多栏 NavigationView 问题就是,无法通过编程手段动态地控制多栏显示状态。...Detail 栏( 最右侧栏 ) doubleColumn 在三栏状态下隐藏 Sidebar ( 最左侧 )栏 all 显示所有的栏 automatic 根据当前上下文自动决定显示行为 上述选项并非适用于所有的平台...toolbar 背景色只有视图上滚时才会显示。...browser iPad 下,当前视图 Title 将显示左侧 image-20220612190914949 editor 不显示返回按钮旁边上页视图 Title image-20220612191040190

10.3K62

Unity通用渲染管线(URP)系列(十四)——多相机(Camera Blending & Rendering Layers)

无论第一人称游戏中的人物手持是什么,由于各种原因,它所显示视角往往与场景其他部分不同。这可以通过另一个摄像头来完成,但也可以通过调整视图矩阵来渲染,但仍然使用同一个摄像头。...(逐相机设置不同post FX) 2 渲染层 当同时显示多个摄像机视图时,我们并不总是希望为所有摄像机渲染相同场景。例如,我们可以渲染主视图和人物肖像。...继续渲染图层之前,让我们在灯光检查器中将其剔除掩码设置为“ Everything”以外其他内容时显示警告。可以通过其cullingMask整数属性(其中-1代表所有层)来提供灯光剔除掩码。...通过删除一层,Everything选项现在由一个值表示,该值最高位外都设置了,与int.MaxValue相匹配。因此,我们可以通过存储int.MaxValue时显示-1来解决第一个问题。...所有可见对象渲染层掩码都设置为everything。定向光掩码设置为单个层,点光掩码设置为不同单层。左相机掩码设置为点光源层以外所有内容。右相机掩码设置为定向光图层以外所有内容。

8.4K22

AnyView 对 SwiftUI 性能影响

前言AnyView 是一种类型擦除视图,对于 SwiftUI 容器中包含异构视图非常方便。在这些情况下,你不需要指定视图层次结构中所有视图具体类型。...如果是 AnyView(基本上是一个包装类型),SwiftUI 将很难确定视图身份和结构,并且它将重新绘制整个视图,这并不是真正高效。...浏览数据时修改我们可以进行一个测试是性能测试 - 向列表发送大量内容并强制更新视图(例如,响应消息),同时我们也浏览数据。这将在较短时间间隔内触发视图多次重绘。...由于几秒钟内强制重绘视图多次,帧丢失在这里更加明显。由于 SwiftUI 不知道这个视图是什么,我假设它每次都会从头开始重绘。...例如,如果你有一个菜单,作为几个异构元素列表,点击时显示不同导航目标,并且决定将这些视图包装为 AnyView,我测量结果表明与使用其他方法相比,性能没有区别。

10400

SwiftUI 中实战使用 MapKit API

前言SwiftUI 与 MapKit 集成今年发生了重大变化。之前 SwiftUI 版本中,我们将 MKMapView 基本功能封装到名为 Map SwiftUI 视图中。...正如我之前所说, SwiftUI 框架早期版本中,我们有一个 Map 视图,为我们提供了 MapKit 基本功能,该功能现在已被弃用。...面向较早 Apple 平台版本情况下,仍然使用已弃用 Map 视图是有意义。...Marker 是一个基本项,允许我们图上放置预定义标记。Annotation 类型更先进,将使我们能够使用纬度和经度图上放置 SwiftUI 视图。...默认情况下,它启用所有可用交互类型。总结今天,我们学习了 SwiftUI 中集成 MapKit 基础知识。接下来几周里,我们将继续讨论相机操作、地图控件和其他高级主题。希望你喜欢这篇文章。

9800

如何在 SwiftUI 中创建悬浮操作按钮

以下是 Twitter 应用中悬浮操作按钮示例。Twitter App 最重要操作步骤,发布推文时使用悬浮操作按钮。如下图,右下角有一个蓝底中间有加号按钮。...悬浮按钮位于屏幕右下角。悬浮按钮具有圆角形状,并在中心具有一个图标。悬浮按钮带有一个轻微阴影。这是要实现悬浮按钮所有行为。让我们逐步实现这些需求。...在此之前,需要先创建并初始化一个屏幕用来承载这个悬浮按钮。以下是一个简单列表视图,嵌套在导航视图和选项卡视图中,列表中显示了 item 加索引内容。...将一个按钮放在内容视图上。这将在列表视图上添加一个加号图像按钮。示例运行截图如下:悬浮按钮位于屏幕右下角接着,是需要实现需求中第二步,使按钮与内容视图对齐到右下角。...希望本文内容对你 SwiftUI 开发中有所帮助,能够轻松地实现漂亮悬浮操作按钮,增强应用界面和用户交互体验。我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

13432

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

(deadline: .now() + 0.1){ // 延迟已保证 Sheet 中视图已完成创建 dump(_n) }}Sheet 视图上下文当 SwiftUI 创建并显示一个...这意味着,相较于原有视图树上创建分支,新上下文中重建视图开销更大,需要进行工作也更多。而 SwiftUI 为了优化效率,通常会对若干操作进行合并。...即使为新上下文中视图进行关联操作是视图求值操作之前完成,但由于 n 变化与关联操作被集中一个 Render Loop 中,这样会导致关联之后并不会强制新关联视图刷新( 关联后,值并没有发生变化...方案一、 DSL 中进行关联,强制刷新原代码中,通过添加 Text 为 ContextView 和 n 之间创建关联便是一个可以接受解决方案。...事实上,使用 @StateObject 相当于 vm.n 发生变化后,强制视图重新计算。

1.9K20

如何使用 SwiftUI 中新地图框架 MapKit

请改用带有 MapContentBuilder 参数地图初始化器。 iOS 17 中,MapKit 为 SwiftUI 引入了需要 MapContentBuilder 参数地图初始化器。...MapContentBuilder(iOS 17) iOS 17 中,用于地图视图各种初始化器都需要一个名为 MapContentBuilder content 参数。...默认情况下允许所有模式(平移、缩放、倾斜、旋转),代码如下: Map(interactionModes: [.pan,.pitch]) { ... } 地图样式 使用 Map Style 视图修饰符可以标准...这意味着可以将它们放置视图任何位置,不过需要定义一个地图范围命名空间,以将它们与它们控制地图关联起来,代码如下: struct ContentView: View { @Namespace var...总结 这就是 iOS 17 中使用 SwiftUI MapKit 所需要了解内容。

59931

SwiftUI 与 Core Data —— 数据获取

本文中我们将探讨 SwiftUI 视图中批量获取 Core Data 数据方式,并尝试创建一个可以使用 mock 数据 FetchRequest。...创建自定义 DynamicProperty 类型时,需要注意以下几点:可以自定义类型中使用环境值或环境对象视图被加载后,视图所有符合 DynamicProperty 协议类型也将一并具备访问环境数据能力...但如果在视图尚未加载或没有提供环境值( 例如忘记注入环境对象,没有提供正确视图上下文 )情况下访问环境数据,将引发应用崩溃。...不可在 update 方法中同步地改变引发视图更新数据与 SwiftUI 视图中更新 Source of truth 逻辑一致,一个视图更新周期中,不能对 Source of truth 再度更新...这是由于一旦 SwiftUI 惰性容器中出现了多个 ForEach ,惰性容器将丧失对子视图优化能力。任何数据变动,惰性容器都将对所有的子视图进行更新而不是仅更新可见部分视图

4.6K30

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

Core Data元素SwiftUI视图 预览 预览是模拟器 预览是模拟器,是一个高度优化且精简模拟器。...可以预览视图中看到对应UUID目录名(必须在动态预览模式下才会显示)。 image-20210827150544279 通过清空对应目录,即可完成上面的1、4、5项。...SwiftUI预设了大量同系统有关环境值,通过设置或响应这些数据,我们可以修改系统配置或读取系统信息。 SwiftUI视图采用树状结构组织,在任意节点视图上注入环境数据都将影响该节点所有视图。...预览也是模拟器,会执行应用程序全部代码。当App执行出错后,所有视图都不能正常预览。...可以预览但是有错误提示 有时含有Core Data元素视图预览时会出现如下错误提示: image-20210827191644251 将预览切换到动态模式通常就可以正常显示

5.1K10

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

Ask Apple 为开发者与苹果工程师创造了 WWDC 之外进行直接交流机会。本文对本次活动中与 SwiftUI 有关一些问答进行了整理,并添加了一点个人见解。本文为下篇。...因此,如果你正在创建一个视图显示可滚动内容,并可能进行选择操作,那么 iOS 和 macOS 上使用 List 将有最好体验。...阅读 The SwiftUI Layout Protocol [11]了解如何创建自定义布局。创建从底部开始滚动视图Q:我如何实现一个底部对齐滚动视图 macOS 上会不会有糟糕性能?...macOS APIQ:对于运行 Monterey Mac,能否如何在 SwiftUI 中实现下面需求建议:打开一个窗口该窗口中初始化数据找到所有打开窗口确定一个窗口是否打开从不在该窗口视图中关闭一个窗口...Too complex to type checkQ:我 iOS 14 SwiftUI 中遇到一个问题,我试图有条件地显示 3 个符合 Shape 协议对象中一个

14.8K30

SwiftUI中使用UIKit视图

相当长时间中开发者仍需SwiftUI中依赖UIKit(AppKit)代码。好在,SwiftUI为开发者提供了便捷方式将UIKit(AppKit)视图(或控制器)包装成SwiftUI视图。...比如onAppear同viewWillAppear表现很类似。同UIKit钩子方法位置有很大不同, onAppear和onDisappear是在当前视图视图上声明。...该方法UIViewRepresentable生命周期中会多次调用,直到视图被移出视图树(更准确地描述是切换到另一个不包含该视图视图树分支)。...例如,UIKit中我们将一个代理对象附加到Text field视图上,当用户输入时,当用户按下return键时,该代理对象中对应方法将被调用。...右侧预览中,我们可以看到placeholder可以正常显示,如果你在其中输入文字,表现状态也同TextField完全一致。

8.2K22

如何在 SwiftUI 中创建条形图

系列文章 如何在 SwiftUI 中创建条形图 SwiftUI水平条形图 iOS 16 中用 SwiftUI Charts 创建一个折线图 iOS16 中用 SwiftUI 图表定制一个线图... Swift 图表中使用 Foudation 库中测量类型 开始图表布局 SwiftUI 对探索不同布局和预览实时视图结果是很友好。...以下列表数据被作为主视图项目数据,每一条数据包含一个对(名称,值)。真正 app 里,这里数据应该通过 ViewModel 从 model 里取数据。...图表会调整到适合它所处容器视图之中。同样图表可以放到任何没有其他视图新试图上,当设备旋转时,图标将会充满空间并调整大小。...SwiftUI一个很好平台,用于创建视图和快速重构独立视图 SwiftUI 中构建条形图需要做一些工作,随着使用数据来试用条形图,可以确定更多定制化。

5.1K10
领券