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

SheetKit——SwiftUI模态视图扩展库

SheetKit——SwiftUI模态视图扩展库 新写了个SwiftUI Sheet扩展库,添加对可变高度Sheet支持。...•模态视图集中管理SwiftUI通常采用.sheet来创建模态视图,对于简单应用来说,这种形式非常直观,但如果应用程序逻辑比较复杂、需要模态视图众多,则上述方式就会让代码显得十分混乱,不易整理。...因此,在此种情况下,通常我们会将所有的模态视图集中管理起来,统一调用。请参阅我之前文章——在SwiftUI中,根据需求弹出不同Sheet[3]。...•新半高模态视图在WWDC 2021中,苹果为大家带来了期待已久半高模态视图。或许推出比较仓促,这种很受欢迎交互方式并没有提供SwiftUI版本,仅支持UIKit。...interactiveDismissDisabled SwiftUI 3.0interactiveDismissDisabled加强版,在通过代码控制是否允许手势取消基础,增加了当用户使用手势取消时可以获得通知能力

2.9K20

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

本文将通过一段可复现“灵异代码”,对 State 注入优化机制、模态视图( Sheet、FullScreenCover )内容生成时机以及不同上下文( 相互独立视图树 )之间数据协调等问题进行探讨...与大多数 View Extension 和 ViewModifier 不同,在视图中,通过 .sheet 或 .fullScreenCover来声明模态视图内容代码闭包,只会在显示模态视图时候才会被调用...代码块中 SheetInitMonitorView 没有任何输出( 意味着闭包没有被调用 ),只有在模态视图进行显示时,SwiftUI 才执行 .sheet 闭包中函数,创建 Sheet 视图。...也就是说 Sheet视图与原有视图分别处于不同上下文中。在 SwiftUI 早期版本中,对于分别位于不同上下文独立视图树,开发者需要显式为 Sheet 视图树注入环境依赖。...事实,使用 @StateObject 相当于在 vm.n 发生变化后,强制视图重新计算。

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

    如何在SwiftUI中实现interactiveDismissDisabled

    去年9月,我在文章【在SwiftUI中制作可以控制取消手势Sheet】[3]中介绍了健康笔记2.0[4]版本Sheet控制实现方法。...在今年推出SwiftUI 3.0版本中,苹果添加了一个新View扩展:interactiveDismissDisabled,该扩展实现了上面的第一个要求——通过代码控制是否允许手势取消Sheet。...原理 委托 从iOS 13开始,苹果调整了模态视图委托协议(UIAdaptivePresentationControllerDelegate)。...") } }} dismissSheet2 本文代码可以在Gist[9]查看 总结 SwiftUI已经诞生两年多了,开发者也已经逐渐掌握为SwiftUI添加新功能各种技巧。...中制作可以控制取消手势Sheet】: https://www.fatbobman.com/posts/swiftui-dismiss-sheet/ [4] 健康笔记2.0: https://www.fatbobman.com

    3.9K40

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

    这些控件基本都是对 UIkit(AppKit)二次包装。Sheet执行下面的代码,你可以清楚地看到,在通过手势取消 Sheet 时,与其关联状态是在 Sheet 完成取消动画后才发生了改变。...通过手势取消 Sheet 后,快速右滑导航容器会导致应用锁死这是一个在 SwiftUI 所有版本中存在错误,你可以在众多论坛或聊天室里看到不少开发者都在寻找解决方法。...它复现条件非常简单:在真机上测试( 模拟器不容易复现 )点击 “GO” 按钮进入下一层视图点击 “Show Sheet” 按钮弹出 Sheet通过下滑手势取消 SheetSheet 取消后(动画结束时...它复现条件如下:iOS 16 系统,在真机或模拟器测试点击视图列表中按钮,可以进入下一级视图。...通过自定义返回按钮以及扩展 UINavigationController 方式,实现了在禁用 Back 按钮后仍支持手势返回,并先修改状态后再进行视图响应。

    707110

    打造可适配多平台 SwiftUI 应用

    100% 基于 SwiftUI 开发,目前支持三个平台: iPhone、iPad 和 macOS。使用者可以通过它来浏览电影信息,包括正在上映以及即将上映影片。...从另一个角度来看,用 SwiftUI 编写代码,尽管大部分可以运行在不同平台上,但有一部分则只能运行在特定平台上,而且往往这部分有平台限定功能,最能体现平台所具有的特点和优势。...但是,如果开发者不能理解 SwiftUI 这个“限制”,并提前做一些准备工作,可能会为之后多平台开发工作带来一些隐患和增加不必要工作量。以“电影猎手” iPad 版本为例。...当我们将“电影猎手”从 iPhone 移植到 iPad 或 Mac 时,除了屏幕可用空间更大之外,另一个显着变化是使用者可以同时打开多个窗口,并可以在不同窗口中对“电影猎手”进行独立操作。...然而,如果我们直接将尚未进行多屏适配 iPhone 版本“电影猎手”运行于 iPad ,会发现尽管可以同时开启多个“电影猎手”窗口,但所有的操作都是同步,也就是在一个窗口中进行操作同时会体现在另一个窗口中

    3.2K80

    打造可适配多平台 SwiftUI 应用

    100% 基于 SwiftUI 开发,目前支持三个平台: iPhone、iPad 和 macOS。 使用者可以通过它来浏览电影信息,包括正在上映以及即将上映影片。...从另一个角度来看,用 SwiftUI 编写代码,尽管大部分可以运行在不同平台上,但有一部分则只能运行在特定平台上,而且往往这部分有平台限定功能,最能体现平台所具有的特点和优势。...但是,如果开发者不能理解 SwiftUI 这个“限制”,并提前做一些准备工作,可能会为之后多平台开发工作带来一些隐患和增加不必要工作量。 以“电影猎手” iPad 版本为例。...当我们将“电影猎手”从 iPhone 移植到 iPad 或 Mac 时,除了屏幕可用空间更大之外,另一个显着变化是使用者可以同时打开多个窗口,并可以在不同窗口中对“电影猎手”进行独立操作。...然而,如果我们直接将尚未进行多屏适配 iPhone 版本“电影猎手”运行于 iPad ,会发现尽管可以同时开启多个“电影猎手”窗口,但所有的操作都是同步,也就是在一个窗口中进行操作同时会体现在另一个窗口中

    2.1K10

    SwiftUI内容边距

    在 iPhone 可能看起来很好,但是在 iPad ,它看起来非常奇怪,因为它将所有文本放在了前导边缘,并保持屏幕中央为空白。...从字面上看,它是另一个安全区域,适应屏幕大小,但仅适用于文本内容。不幸是,我们在 SwiftUI 中无法访问 readableContentGuide。...适配 iPad我们可以通过增加 iPad 安全区域来解决此问题,如下所示:struct ContentView: View { @Environment(\.horizontalSizeClass...200 : 0) } }}我们通过使用 horizontalSizeClass 环境值和 safeAreaPadding 视图修饰符,将内容移动到了 iPad 中心。...随后,通过介绍 UIKit 中 readableContentGuide 布局指南以及 SwiftUI safeAreaPadding 视图修饰符,展示了在 iPad 适配内容边距方法。

    17632

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

    视图变化在前、状态变化在后 在 SwiftUI 中,某些可编程控件在执行一定操作时,会先更新视图,待视图变化完成后再修改与其对应状态。这些控件基本都是对 UIkit(AppKit)二次包装。...通过手势取消 Sheet 后,快速右滑导航容器会导致应用锁死 这是一个在 SwiftUI 所有版本中存在错误,你可以在众多论坛或聊天室里看到不少开发者都在寻找解决方法。...它复现条件非常简单: 在真机上测试( 模拟器不容易复现 ) 点击 “GO” 按钮进入下一层视图 点击 “Show Sheet” 按钮弹出 Sheet 通过下滑手势取消 SheetSheet 取消后...它复现条件如下: iOS 16 系统,在真机或模拟器测试 点击视图列表中按钮,可以进入下一级视图。...通过自定义返回按钮以及扩展 UINavigationController 方式,实现了在禁用 Back 按钮后仍支持手势返回,并先修改状态后再进行视图响应。

    34620

    如何开发一个优秀 App Clip

    然后,使用 URL 来决定 App clip card 显示什么数据 (App clip card 是一个我们调用后在底部弹出 Sheet 视图)。...增强用户体验 App clip 不会显示在主屏幕,并且用户无法以管理 App 方式对其进行管理。相反,一段时间不活动后,系统会从设备中删除 App clip 。...Keep Your App Clip Small App clip 大小必须不超过10 MB,才能提供即时启动。如果可能,将您应用剪辑保持在此限制以下。...App clip 可用框架 App clip 可以使用 SwiftUI 和 UIKit ,并且可以访问与完整应用程序相同框架。...•App extensions•自定义和设置;例如,创建 settings bundle•资料移交和文件开启•IAP 和 支付卡配置•低级Unix功能;例如,BSD通知•iPad 分屏•注册自定义 URL

    90710

    SwiftUI 实现一个开源 App Store

    提供苹果实时榜单查询,包含 iOS 和 iPad 热门免费榜、热门付费榜、畅销榜,还有新架榜、新架免费榜、新架付费榜等。...2.1 排行榜 首先,App Store 榜单有很多,包含 iOS 和 iPad 热门免费榜、热门付费榜、畅销榜,还有新架榜、新架免费榜、新架付费榜等,我们都实现了这些榜单。...比如,SwiftUI 还不支持 WebView,所以用 SFSafariViewController 桥接 View 在 SwiftUI 组件中显示会异常。...- Stack Overflow 另外,就是苹果 API 坑,接口返回字段 im:id、im:bundleId,包含冒号,让人怀疑人生!最后,通过自定义键值名,解决了解析映射问题。...App,可以开始使用 SwiftUI 来开发,毕竟原生体验和原生组件,用户起来也很快乐。

    2.1K20

    苹果推出突破性新技术,使开发人员更加轻松快捷地创建应用

    预览可以直接在连接苹果设备运行,包括iPhone,iPad,iPod touch,Apple Watch和Apple TV,允许开发人员查看应用程序如何响应Multi-Touch,或者在界面构建过程中与摄像头和车载传感器实时工作...它还具有动画、物理和空间音频功能,开发人员可以使用新RealityKit Swift API利用RealityKit功能。...轻松让iPad应用程序支持Mac 新工具和API使iPad应用程序更容易上传到Mac。...现在Core ML支持100多个模型层,应用程序可以使用最先进模型,以前所未有的方式提供深刻理解视觉,自然语言和语音体验。 开发人员第一次可以使用模型个性化更新设备机器学习模型。...具有不同数据集多模型训练可以与对象检测,活动和声音分类等新类型模型一起使用。

    2.1K20

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

    SwiftUI 与 Core Data —— 问题[1]SwiftUI 与 Core Data —— 数据定义[2]SwiftUI 与 Core Data —— 数据获取[3]可以在 此处[4] 获取演示项目...修改为 String )当声明代码可以部分改善在视图中使用托管对象友善度。相较于将具有默认值属性声明为可选值类型( 例如 String ),数值属性声明则更加令人困惑。...事实,在 Xcode 自带 Core Data 模版中,就是这样使用。image-20221212101526366但这确实是正确使用方式吗?是否会有严重安全隐患?...另外,在其他一些操作中,为了保证模态视图稳定,我们通常也会将模态视图挂载到 List 外面。例如:@State var item: Item?....now).timeIntervalSince1970)") }}运行上面的代码,在数据被删除后,Sheet 视图中 item 会因 managedObjectContext 为 nil 而使用备选数据

    3.3K20

    SwiftUI 实现一个开源 App Store

    提供苹果实时榜单查询,包含 iOS 和 iPad 热门免费榜、热门付费榜、畅销榜,还有新架榜、新架免费榜、新架付费榜等。...2.1 排行榜 首先,App Store 榜单有很多,包含 iOS 和 iPad 热门免费榜、热门付费榜、畅销榜,还有新架榜、新架免费榜、新架付费榜等,我们都实现了这些榜单。...就是可以监听 App 在商店状态,举例来说,App 发布了新版本,那么大概要多久才能在商店显示呢?所以,我们可以通过苹果接口,来定时查询 App 状态,从而知道 App 什么时候生效。...Top Grossing iPad Applications 最畅销 iPad 应用 应用分类 分类 ID 英文说明 解析 6000 Business 商务 6001 Weather 天气 6002...- Stack Overflow[15] 另外,就是苹果 API 坑,接口返回字段 im:id、im:bundleId,包含冒号,让人怀疑人生!最后,通过自定义键值名,解决了解析映射问题。

    1.8K20

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

    SwiftUI提供了对这些标准手势内置支持,所以你大部分应用输入都依赖于它们。当你想超越标准手势,使用ARKit创建自定义手势。...在任何SwiftUI应用中,你都可以使用场景将内容放到屏幕。场景包含要在屏幕显示视图和控件。场景还定义了这些视图和控件出现在屏幕外观。...视图为您界面提供基本内容,您可以使用SwiftUI修饰符自定义视图外观和行为。...将指针移动到窗口栏旁边圆圈,显示窗口关闭按钮。将光标移动到窗口一个角落,以将窗口栏变为调整大小控件。 tips:应用程序不能控制窗口在空间中位置。...使用visionOS,应用程序自动获得具有visionOS外观和感觉材料,完全可调整大小窗口,间距调整为眼睛和手输入,并为您自定义控件提供高亮显示调整。

    94340

    肘子 Swift 周报 #031 |苹果用 M4 来展现拥抱 AI 决心

    肘子的话 苹果用 M4 来展现拥抱 AI 决心 在 5 月 7 日,苹果终于在时隔一年半后更新了 iPad 系列,其中最引人注目的是,新款 iPad Pro 直接搭载了最新 M4 芯片。...所有迹象都指向,苹果将在 WWDC 2024 推出若干与 AI 有关更新和新功能、新服务。...根据开发者设置变换规则,对该容器提供尺寸进行计算后,以此作为视图建议尺寸。从某种意义讲,它可以视为一个允许自定义变换规则特殊版本 frame 修饰器。...迁移结果表明,Tuist 不仅解决了与 CocoaPods 相关问题,还显著改善了 app 启动时间和减小了二进制文件大小。此外,与 CocoaPods 相比,Tuist 编译时间更短。...文章通过多个模型转换实例,探索了该工具效率和效果,包括对较小模型自定义转换尝试。

    15510

    SwiftUI 之 HStack 和 VStack 切换

    想了解更多信息,可以查看我文章 - SwiftUI 布局系统第三章 目前,我们按钮是垂直排列,并且填满了水平线上可用空间(你可以用以上示例代码预览按钮样子),虽然这在竖向 iPhone 看起来很好...虽然我们也有很多方法能解决这些问题(例如使用类似在这篇 Q&A 中用来使多个视图具有相同宽度和高度技术),但真正问题是当我们要动态的确定方向时,测量可用空间是否是一个好方法。...(例如在大尺寸 iPhone 使用横屏,或者全屏 iPad 任一方向),而其它所有尺寸配置使用垂直布局。...Xcode 14 一部分仍在测试阶段) 其中一个工具是新 Layout 协议,它既能让我们创建完整自定义布局,直接集成到 SwiftUI 布局系统中,同时也提供给我们一种更丝滑更动画方式在各种布局之间动态切换...因为 VStack 可能总是合适,即使在我们希望布局是横向情况下(例如 iPad 全屏模式)。

    2.8K10

    SwiftUI TextField进阶——格式与校验

    SwiftUI修饰方法) 以上原则,在SheetKit——SwiftUI模态视图扩展库[3]和用NavigationViewKit增强SwiftUI导航视图[4]中均有体现。...•只支持部分类型设备•支持键盘类型有限 例如在iPad下keyboardType是无效,在苹果鼓励应用程序对多设备类型支持今天,让用户在不同设备享受到相同体验至关重要。...如果你需要判断是日期或其他自定义格式数据,最好也在代码中提供针对本地化字符处理过程。 Formatter SwiftUITextField目前对新老两种Formatter都提供了对应构造方法。...•可持续性(SwiftUI向后兼容性)方案二由于完全采用SwiftUI方式编写,因此其可持续性从理论应强于方案一。.../posts/uikitInSwiftUI/ [3] SheetKit——SwiftUI模态视图扩展库: https://www.fatbobman.com/posts/sheetKit/ [4] 用NavigationViewKit

    8.2K20

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

    自定义布局Q:我经常想根据列表中最长或最短文字来布置各种小组件。鉴于动态文本大小在应用程序运行时可能会发生变化,衡量给定字体文本大小最佳方法是什么?A:你好!我们新布局协议支持这个功能。...任何自定义布局完整实现都比我在这里帖子中快速勾勒出来要长,但总体思路是,你可以创建一个布局来查询其子级理想大小并相应地对它们进行排序。...其中 2 个是自定义形状( 基本是圆角矩形,只有两个角是圆 ),其中一个是矩形。编译器抛出一个错误,说它花了太多时间来检查视图类型。...,但原因并非来自实际视图内容,而是由于 sheet、toolbar 等修饰器中代码造成。...截止 SwiftUI 目前版本,可以通过以下步骤获取到滑动距离:自定义 struct, 让它实现 PreferenceKey 协议,其自定义结构体,是需要收集 gemmetry data (视图坐标信息

    14.8K30

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

    那么,SwiftUI解决了哪些痛点?带来哪些好处?代码风格如何?敬请阅读本文。 刚刚结束苹果WWDC推出了一个对于开发者非常重要框架:SwiftUI。...SwiftUI是一个非常方便快速构建UI框架,与最新Xcode设计工具无缝协作,可为所有苹果设备构建UI。开发者通过SwiftUI,利用Swift语法就能够完成代码和设计同步。...让Xcode for iPad更上一层楼 开发者对Interface Builder抱怨不是一天两天了,它大大增加了分解视图块以及从视图控制器(view controller)使用视图工作量,导致出现体积臃肿视图控制器...此前,无论什么尺寸屏幕iPad,总是很难将Interface Builder大小放到iOS。而拥有更简单,更快速,更安全SwiftUI为开发人员实现真正平台独立性迈出了一大步。...感受一下SwiftUI代码风格 ? Github一个repo整理了在WWDC 2019发布SwiftUI布局框架一些官方示例: SwiftUI Essentials 创建和组合视图: ?

    5.4K20

    肘子 Swift 周报 #036 | WWDC 2024 观后感

    AI 尽管因为信息提前泄漏和长时间预渲染,许多人在 WWDC 之前已对苹果即将带来 AI 领域变革有所预知,但在亲眼见到 Keynotes 演示后,依然令人振奋和鼓舞。...SwiftUI 初次接触 SwiftUI 今年新特性时,我并未感到特别兴奋。然而,做了更多研究后,我意识到此次更新在 SwiftUI 发展史上将具有十分重要意义。...例如,集成了 UIKit 手势系统,引入了功能更丰富自定义容器,Text 自定义渲染以及提供了精确滚动控制等。...a sidebar[15] by Donny Wals[16] Present a form sheet in SwiftUI[17] by Natalia Panferova[18] Enhanced...Vittoriosi: https://twitter.com/pasqualevitt [49] WWDC 2024 Sample Code: https://t.ly/WqfE6 [50] 探索 WWDC24 公布重大更新

    12510
    领券