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

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

在更新 iOS 13 或者 iPadOS 13 ,你会发现长按许多软件图标都会出现如下弹窗,比如设置内快捷选项允许你快速更改电池设置等等。...点按弹窗体验并没有止步于此,使用过新系统一段时间,你会发现这个点按弹窗渗透到了系统应用方方面面。...其中 View 表示一个视图,比如我们在手机上看到一个滑条,一张图片,一个列表等种种,都叫做视图;而 Modifier 则是修饰器,它作用是为视图增加功能,比如圆角,动画,阴影,边际,背景等等。...终于聊到了点按菜单实现方式了,点按菜单是什么呢?它实质就是一个 View,和其它任何 View 并无二致,因此我们需要在 contextMenu 里放一个 View 即可。...而点按菜单,顾名思义,就是一个按钮,那么我们设置一个 Button View。

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

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

SwiftUI Overlay Container[1] 是一个用于 SwiftUI 视图容器组件。一个可定制、高效、便捷视图管理器。...历史 2020 年夏天,在为 健康笔记[2] 添加侧向滑动菜单过程中,我发现在开发中经常会碰到需要在一个视图上方动态添加另一视图场景,例如(提示信息、广告、浮动按钮、新手指南等等)。...设计动机 当我们需要在视图上层显示新内容(例如:弹出信息、侧边菜单、帮助提示等)时,有很多优秀第三方解决方案可以帮助我们分别实现,但没有一个方案可以同时应对不同场景需求。...新添加视图将自动替换掉正在显示视图。 oneByOne oneByOneWaitFinish 同一时间能在容器中显示一个视图。只有当前正在显示视图被撤销,新视图才能被显示。...shadowStyle 为视图添加阴影 dismissGesture 为视图添加取消手势,目前支持 单击、双击、长按、左划、右划、上划、下划、自定义。

2.1K20

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

A:看一下上下文菜单修饰器( contextMenu ) primaryAction 参数。该 API 也有一个 forSelectionType 参数,支持多选。...在 SwiftUI 4.0 中,contextMenu 功能获得了不小提高。例如一个上下文菜单中可以有多个选项、支持 primaryAction、以及可定制预览视图。...除了使用习惯外,还应考虑偏移视图是否需要会对周边视图产生影响( 布局层面 )。详情请阅读 在 SwiftUI 中实现视图居中若干种方法[14] 。...与内存泄漏进行了大量较量,我设法让它工作起来。...目前我做法是在一个单例中保存对子上下文和托管对象引用,然后用一个 URL 打开一个新窗口,这个 URL 在单例中检查上下文和托管对象。如果我们能用自定义参数启动新窗口,那就更好了。

12.2K20

肘子 Swift 周报 | Swift,超越苹果生态!

在这个新版本中,首次在非苹果平台复刻了 SwiftUI 框架核心基础——AttributeGraph,从而具备了完整地将 SwiftUI 优势全面带到其他平台可能性。...在实际开发中,Edvinas Byla 意识到 LazyVGrid 性能并不理想,且不能满足他对上下文菜单行为特定需求,因此他决定采用 NSTableView 作为替代方案。...通过对 NSTableView 和 NSTableCellView 精心定制,他不仅显著优化了滚动体验,还解决了上下文菜单相关问题。...文章中,作者强调他目的并非是要比较 SwiftUI 与 AppKit 性能优劣,或者质疑 SwiftUI 在 macOS 上应用适用性。...实际上,该应用复杂模板编辑器几乎完全使用 SwiftUI 开发,且表现出色。这一点彰显了 SwiftUI 在实际应用中强大潜力和灵活性。

10810

SwiftUI 动画进阶 — Part 5:Canvas

前言 这个高级SwiftUI动画系列第五部分将探索Canvas视图。...该闭包接收两个参数:上下文context 和 尺寸size。上下文使用一个新 SwiftUI 类型 GraphicsContext,它包含了很多方法和属性,可以让我们绘制任何东西。...例如,解析文本会告诉我们指定字体最终尺寸。或者我们也可以在绘制之前改变已解析元素阴影。要了解更多关于可用属性和方法,请查看 ResolvedImage 和 ResolvedText 。...在副本上所做所有改变,都不会影响到原始上下文。一旦你完成了,你就可以继续在原始(未改变上下文上绘图。...对于柱状渐变,在视图中实现它比较容易,因为它将相对于视图原点。 每一列都有许多参数:位置(x、y、z)、字符、从顶部删除多少个字符,等等。这些值在每次TimelineView更新都会被变更。

2.6K10

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

Table 中上下文菜单Q:如果我在 TABLE 上添加了一个上下文菜单,我如何确定哪一行导致了菜单显示(无需选择该行)?...视图性能优化是一个系统工程,在对其运作机制、注入原理、更新时机等方面有了综合认识,可以更好地做出有针对性解决方案。...连锁动画Q:在 SwiftUI 中,如何实现连锁动画?例如,我想先给一个视图做动画,当动画完成立即启动另一个动画。A:不幸是,目前不可能实现连锁动画。...SwiftUI 当前缺乏动画完成回调机制。在动画不复杂情况下,可以通过创建一个符合 Animatable 协议 ViewModifier 来同步观察动画进程。...对于可能造成卡顿图片数据,放弃从托管对象图片关系中直接获取方式。在 Cell 视图中,通过创建 request 从私有上下文中提取数据并转换成图片。

14.7K30

从 CVE-2017-0263 漏洞分析到 Windows 菜单管理组件

0x0 前言 这篇文章分析了发生在窗口管理器(User)子系统菜单管理组件中 CVE-2017-0263 UAF(释放重用)漏洞。在函数 win32k!...菜单状态结构体用来存储与当前活跃菜单状态相关详细信息,包括上下文菜单弹出坐标、关联位图表面对象指针、窗口设备上下文对象、之前上下文菜单结构体指针,以及其他一些成员域。...当前线程信息对象和菜单状态对象对应关系 ---- 当用户通过键鼠选择菜单项、或点击菜单范围之外屏幕区域时,系统将向当前上下文菜单窗口对象发送相关鼠标按下或菜单终止事件消息。...此时对目标菜单对象调用 SetWindowPos 以设置 SWP_SHOWWINDOW 状态标志,将导致系统对目标菜单窗口创建并关联多个阴影窗口对象,创建阴影窗口对象将被先插入 gpShadowFirst...个阴影窗口对象菜单窗口对象)指针。

67110

.NET混合开发解决方案13 自定义WebView2中上下文菜单

或WPF窗体 Edge浏览器中网页,点击鼠标右键,出现上下文菜单及子菜单,如下图 WebView2控件加载网页,鼠标在网页上点击右键,也会出现上下文菜单,如下图 对比可以看出WebView2控件中右键上下文菜单内容比...上下文菜单 属于 WebView2 控件默认上下文菜单 (右键单击菜单) 或自定义上下文菜单 (右键单击菜单) 属于主机应用。...Image 指示上下文菜单是为图像元素创建。 Page 指示上下文菜单是为页面创建,没有任何其他内容。 SelectedText 指示上下文菜单是为所选文本创建。...程序中我设置了CheckBox,但是运行没有生效,暂时不知道什么原因。如有小伙伴研究出来了,可以分享一下。...请求上下文菜单坐标,以便应用可以检测用户右键单击 UI 项。 坐标是根据 WebView2 控件左上角定义。 包含所选上下文类型选择对象 和相应上下文菜单参数数据。

2.8K20

不得不吐槽Android PopupWindow几个痛点(实现带箭头上下文菜单遇到坑)

/developer/article/1013227,这个我认为就是api留下bug,有些版本里面修复了这个问题,感兴趣可以多看看几个版本源码,还可以看出Google是怎么修改。   ...如果真这样,那实现自适应带箭头上下文菜单不就很容易了么,事实证明还是会有些瑕疵。   ...{ return false; // 这里面拦截不到返回键 } });   将理论始终听起来很形象,通过实例可以让人更加印象深刻,第一点已经有文章介绍了,下面实现一个带箭头上下文菜单体会一下痛点二和三...先上效果再上代码,代码里面的注释标注了痛点地方。 上下文菜单效果图 默认向下弹出 ? 下面空间不足时先上弹出 ?  ...,但是只要知道有这些坑,以后写代码时候就会多留意下,知道PopupWindow那几个常用api相互组合会出现什么样结果。

3.6K90

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

而出现这种现象原因则是由 State 注入优化机制、 Sheet( FullScreenCover )视图生命周期以及新建上下文等几方面共同造成。...dump(_n) }}Sheet 视图上下文SwiftUI 创建并显示一个 Sheet 视图时,并非在现有的视图树上创建分支,而是新建一棵独立视图树。...也就是说 Sheet 中视图与原有视图分别处于不同上下文中。在 SwiftUI 早期版本中,对于分别位于不同上下文独立视图树,开发者需要显式为 Sheet 视图树注入环境依赖。...这意味着,相较于在原有视图树上创建分支,在新上下文中重建视图树开销更大,需要进行工作也更多。而 SwiftUI 为了优化效率,通常会对若干操作进行合并。...即使为新上下文视图进行关联操作是在视图求值操作之前完成,但由于 n 变化与关联操作被集中在一个 Render Loop 中,这样会导致在关联之后并不会强制新关联视图刷新( 关联,值并没有发生变化

1.9K20

用 Table 在 SwiftUI 下创建表格

欢迎大家在 Discord 频道[2] 中进行更多地交流 Table 是 SwiftUI 3.0 中为 macOS 平台提供表格控件,开发者通过它可以快捷地创建可交互多列表格。...// 单选 @State var selections: Set = [] // 多选,需要 LocaleInfo 遵循 Hashable 协议 下图为开启多选场景: image...} } } table_drag_demo_2022-06-20_19.36.09.2022-06-20 19_37_28 交互 除了行选择和行拖拽外,Table 还支持对行设置上下文菜单...出现上述问题主要原因是,苹果没有采用其他 SwiftUI 控件常用编写方式( 原生 SwiftUI 容器或包装 UIKit 控件),开创性地使用了 result builder 为 Table 编写了自己...上下文菜单、选择 ) List( Grid 中 GridRow 并非真正意义上行 ) 需要视图可渲染( 保存成图片 ) LazyVGrid、Grid 可固定标题行 List、LazyVGrid、Grid

3.9K30

EasyCVR登录通道数据及菜单栏页面显示异常排查与解决

有用户反馈,登录EasyCVRWeb页面,发现设备和分组信息都无法加载,而且菜单导航栏也显示不全,版本信息也无法打开,请求我们协助排查。...技术人员配合项目现场排查发现,原来是数据库问题,但是自动生成数据库是正常。于是进一步排查是否为数据库错乱导致。对比新老数据库发现设备表缺少一个gb_device_id字段。...排查现场其他备份数据库测试,发现备份数据库也没有这个gb_device_id字段,但是数据和格式都是正常。...后续排查用户角色表 t_user_roles表,发现rolesid不对,因此是这个rolesid错误导致上述异常现象。...将t_user_roles表rolesid4改成1保存,然后再重启EasyCVR服务,随后平台已经正常运行了。

13710

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

数据多份拷贝 当图片数据从 SQLite 经 Core Data 最终通过 SwiftUI 显示时,实际上在内存中至少保存了三份拷贝: 行缓存 托管对象上下文( 托管对象被填充 ) 显示该图片 SwiftUI...由于一个协调器可以对应多个上下文,如果在另一个上下文中,指向同一个图片另一个托管对象也进行了填充,那么就又会多出一个 Copy 不成功优化 在首轮优化代码基础上,做如下添加: .onDisappear...这意味着,在托管对象上下文中,data 属性即使在填充也仅有 50 个字节( 文件 ID )。 目前无法找到 Core Data 在行缓存以及上下文中处理这些外置二进制数据任何资料。...,由于该 Picture 托管对象仅存活于视图 onAppear block 中,闭包执行完毕,Core Data 会自动释放上下文以及行缓存中对应数据。...总结 SwiftUI 惰性容器使用起来很方便,并且通过 @FetchRequest 与 Core Data 配合也很方便,这在一定程度上导致开发者有了轻视心理,认为 SwiftUI + Core Data

1.2K10

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

在明确了预览是模拟器概念,很多在预览中出现问题,就有了新解决思路。...忘记注入上下文 含有Core Data元素视图预览崩溃情况相当比例都是由于忘记在环境值中注入持久化存储上下文(NSManagedObjectContext)而导致。...由于前文中提到SwiftUI App life cycle独特性,你无法在根视图中使用单例来注入持久化上下文。...SwiftUI通常采用Redux开发模式,通过将获取到Core Data数据转换成标准Swift结构从而避免在视图中使用托管对象上下文或托管对象。...在重启应用或重启预览,数据会恢复成Bundle中原始数据集(有时在预览模式下数据不会立即复原,需在几次动态模式切换才会恢复)。

5.1K10

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

数据多份拷贝 当图片数据从 SQLite 经 Core Data 最终通过 SwiftUI 显示时,实际上在内存中至少保存了三份拷贝: 行缓存 托管对象上下文( 托管对象被填充 ) 显示该图片 SwiftUI...由于一个协调器可以对应多个上下文,如果在另一个上下文中,指向同一个图片另一个托管对象也进行了填充,那么就又会多出一个 Copy 不成功优化 在首轮优化代码基础上,做如下添加: .onDisappear...这意味着,在托管对象上下文中,data 属性即使在填充也仅有 50 个字节( 文件 ID )。 目前无法找到 Core Data 在行缓存以及上下文中处理这些外置二进制数据任何资料。...,由于该 Picture 托管对象仅存活于视图 onAppear block 中,闭包执行完毕,Core Data 会自动释放上下文以及行缓存中对应数据。...总结 SwiftUI 惰性容器使用起来很方便,并且通过 @FetchRequest 与 Core Data 配合也很方便,这在一定程度上导致开发者有了轻视心理,认为 SwiftUI + Core Data

2.4K40

压缩和转换文件格式:单击右键即刻完成 | 开源日报 No.165

,允许您使用 Windows 资源管理器上下文菜单来转换和压缩一个或多个文件。...可以通过 Windows 资源管理器上下文菜单进行文件转换和压缩 支持多种语言本地化 使用了多个中间件,如 ffmpeg、ImageMagick、Ghostscript 等 docker/composehttps...madler/zlibhttps://github.com/madler/zlib Stars: 5.0k License: NOASSERTION zlib 是一个通用数据压缩库,所有代码都是线程安全...此外,还有许多线上或线下活动可供参加,包括 SwiftUI Lab, Hacking with Swift, Donny Wals 和 Swift with Majid 等知名组织举办活动。...除了这些内容之外,本项目也推荐了一系列与 WWDC 相关书籍、课程和应用程序优惠信息。 优点: 提供一个全面而便捷地获取最新 Apple 开发相关资料和交流经验平台。

13110

如何结合 Core Data 和 SwiftUI

core data stack SwiftUI 和 Core Data 之间相差将近十年 —— SwiftUI 随着 iOS 13 面世而 Core Data 则是 iPhoneOS 3 产物;...我们需要确保该获取请求随着时间推移保持最新,以便在创建或删除学生时,我们 UI 保持同步。 SwiftUI 有一个解决方案,而且——您猜对了——这是另一个属性包装器。...为了解决这个问题,我们将在列表下方创建一个按钮,每次点击都会添加一个新随机学生,但是首先我们需要一个新属性来存储托管对象上下文。 让我重申一下,因为这很重要。...我们所有的托管对象都位于托管对象上下文中,该上下文负责实际获取托管对象以及保存更改等。如果需要的话,您可以有许多托管对象上下文,但这距离现在还有一段路要走——实际上,您可以长期使用它。...更好是,它已经将其添加到 SwiftUI 环境中,这就是@FetchRequest属性包装器起作用原因——它使用了环境中可用任何托管对象上下文

11.7K30
领券