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

SwiftUI 4.0 全新导航系统

访问我博客 www.fatbobman.com[1] 可以获得更好阅读体验。欢迎大家在 Discord 频道[2] 中进行更多地交流 长久以来,开发者对 SwiftUI 导航系统颇有微词。...SwiftUI 4.0( iOS 16+ 、macOS 13+ )对导航系统作出了重大改变,提供了以视图堆栈为管理对象新 API ,让开发者可以轻松实现编程式导航。本文将对新导航系统作以介绍。...,一分为二方式将让布局表达更加清晰,同时也会强迫开发者为 SwiftUI 应用对 iPadOS 和 macOS 做更多适配。...上述选项并非适用于所有的平台,例如,在 macOS ,detalOnly 不会起作用 如果想在 SwiftUI 4.0 之前版本使用类似的功能,可以参考我在 用 NavigationViewKit...Detail 栏尺寸不变( 通常是全屏 )。

10.3K62

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

Swiftcord[12] 代码展示了如何在 SwiftUI 下实现倒置列表。阅读 优化在 SwiftUI List 中显示大数据集响应效率[13] 一文,了解苹果工程师推荐方法。...将背景扩展到安全区域Q:如果我有一个自定义容器类型,可以接受一个顶部和底部视图,是否有办法让 API 调用者将所提供视图背景扩展到安全区域内,同时将内容( 文本或按钮 )保留在安全区域内?...macOS APIQ:对于运行 Monterey Mac,能否如何在 SwiftUI 中实现下面需求建议:打开一个窗口在该窗口中初始化数据找到所有打开窗口确定一个窗口是否打开从不在该窗口视图中关闭一个窗口...特别是,我们在 WindowGroup 添加了新 OpenWindowAction 和新初始化方法,这将同时满足 1 和 2 。...其中 2 个是自定义形状( 基本是圆角矩形,只有两个角是圆 ),其中一个是矩形。编译器抛出一个错误,说它花了太多时间来检查视图类型。

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

何在Mac正确使用分屏功能

macOS提供了一个方便功能,可以并排查看两个应用程序,同样分割屏幕。下面小编就为大家介绍一下如何在Mac使用Split View功能 。...无论您是想更有效地完成某些工作还是浏览网页时更轻松地执行多任务,在Split View中构建macOS都是一项非常有用功能。 在Mac如何使用分屏: 1.单击并按住窗口左上角全屏按钮。...2.当您看到屏幕一半变成蓝色时,将窗口拖到左侧或右侧,然后松开应用程序 3.选择您要填写屏幕另一半第二个窗口,单击它。...4.要退出分屏模式,请按esc键(或触摸栏按钮)或将鼠标移动到屏幕顶部并单击全屏按钮 。...如果按住全屏按钮不进入分屏模式,请转到Apple菜单>系统偏好设置,单击任务控制,并确保选中“显示器具有单独空间”。 小编觉得在Mac使用Split View分屏功能真得很方便,你们觉得呢?

5.9K30

AVKit框架详细解析(四) —— 基于AVKit 和 AVFoundation框架视频流App构建

这包括一个播放按钮、一个静音按钮和用于前进和后退 15 秒跳过按钮2. Adding Remote Playback 那很容易,对吧? 如何从远程 URL 添加视频播放? 那一定要难很多!...Playing Video Efficiently 在继续之前要注意一件事是播放视频是一项资源密集型任务。 事实,即使您开始观看全屏视频,您应用程序也会继续播放这些剪辑。...您会在左上角看到画中画按钮……否则不会! 缺点是,在撰写本文时,iOS 14.5是可用最新版本,VideoPlayer SwiftUI 视图未显示画中画按钮。...好处是你知道如何在 SwiftUI 和 UIKit 之间建立桥梁。...(player: avPlayer) 构建并运行,打开一个全屏视频并观看出现在左上角画中画按钮

6.9K10

Ask Apple 2022 与 SwiftUI 有关问答(

对 iOS 和 iPadOS 来说,一个按钮或许有效,但对 macOS 就不太适合了。另外,.contextAction 支持多选。它还会回来吗?...是否关于如何使用多个场景指导或例子?或者大多数应用程序只需要一个 WindowGroup ?A:多场景对于建立复杂应用程序是很有用,特别是在 macOS 。...DocumentGroupQ:在 macOS 使用 SwiftUI 应用生命周期和 DocumentGroup 时,如果应用仅为数据阅读器,是否可以禁止创建新文件?...A:在 macOS Ventura 中,我们在 [WindowGroup 引入了新 API](https://developer.apple.com/documentation/swiftui/windowgroup...image-20221022135907441为 Stepper 添加快捷键Q:我们如何为 SwiftUI Stepper( 在 MacOS )添加增量和减量操作快捷键?

12.2K20

打造可适配多平台 SwiftUI 应用

100% 基于 SwiftUI 开发,目前支持三个平台: iPhone、iPad 和 macOS。使用者可以通过它来浏览电影信息,包括正在上映以及即将上映影片。...通过点击任意窗口中任意 Tab 中 “Hit Me” 按钮来增加点击次数。点击次数显示在窗口上方。...onAppear { sceneID = UUID() ...}这个问题,同样出现在“电影猎手”中创建 overlayContainer 场景中( 用于显示全屏电影剧照 ),也是采用上述方法才得以解决...也就是说,尽管“电影猎手”采用了为每个场景创建一个独立 Store 实例外在形式,但在底层逻辑,与 SingleStore TCA 实现本质没有什么不同。...开发者也就能够把更多精力投入到为用户打造不同平台独特使用体验。以上就是今天交流全部内容,谢谢大家聆听,希望能对你有所帮助。

3.1K80

打造可适配多平台 SwiftUI 应用

100% 基于 SwiftUI 开发,目前支持三个平台: iPhone、iPad 和 macOS。 使用者可以通过它来浏览电影信息,包括正在上映以及即将上映影片。...通过点击任意窗口中任意 Tab 中 “Hit Me” 按钮来增加点击次数。点击次数显示在窗口上方。....onAppear { sceneID = UUID() ... } 这个问题,同样出现在“电影猎手”中创建 overlayContainer[9] 场景中( 用于显示全屏电影剧照 )...也就是说,尽管“电影猎手”采用了为每个场景创建一个独立 Store 实例外在形式,但在底层逻辑,与 SingleStore TCA 实现本质没有什么不同。...参考资料 [1] 我在北京参加 SwiftUI 技术沙龙: https://www.fatbobman.com/posts/attended-SwiftUI-salon-in-Beijing/ [2]

2K10

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

并且 SwiftUI 可以“实现一次编码,可适应五端 Apple 产品平台”, 包括watchOS、tvOS、macOS 等,以此统一苹果平台 UI 框架。...他发表了一篇博客,总结了尝试并放弃 SwiftUI 过程,这篇文章在 Hacker News 引发了开发者们大量讨论: “恕我直言,SwiftUI 是一个很好机会,但苹果公司对它投资不足。...这些按钮只跟管理 SpriteKit 视图缩放 @State 相关联。尽管几乎不涉及任何其他数据,在界面更新前单击这些按钮,也会产生将近一秒钟巨大延迟。...但我至少可以更好地控制应用程序行为,而且根据需求随意调整各种元素。 总之,经历了这么一番波折,我还是很庆幸自己果断放弃了 SwiftUI。这可能是我在这个项目做过最明智选择。...课程推荐 前阿里 P10 、浙江大学博导东白老师在极客时间出个专栏,叫《郭东白架构课》,非常火爆,已经有超过 2w 人学习了。

4.9K20

使用 SwiftUImacOS 创建类似于 App Store Connect 选择器

前言最近,我一直在为我应用开发一个全新界面,它可以让你查看 TestFlight 所有可用构建,并允许你将它们添加到测试群组中。...我希望构建类似于 App Store Connect 中选择器组件,使用户体验尽可能熟悉,并在本文中,将展示如何使用 SwiftUImacOS 构建了这个组件。...使用 .overlay 修改器在用户悬停在测试群组组件时显示一个移除按钮。该按钮从构建所属测试群组列表中移除测试群组。...如果有任何可用测试群组可以添加到构建中,则显示一个加号按钮,让用户选择要添加测试群组。...总结文章介绍了如何使用 SwiftUImacOS 创建类似于 App Store Connect 选择器组件。

12932

SwiftUI 之 HStack 和 VStack 切换

前言 SwiftUI 各种堆栈是许多框架中最基本布局工具,能够让我们定义组视图,这些组视图可以按照水平、垂直或覆盖视图对齐。...想了解更多信息,可以查看我文章 - SwiftUI 布局系统第三章 目前,我们按钮是垂直排列,并且填满了水平线上可用空间(你可以用以上示例代码预览按钮样子),虽然这在竖向 iPhone 看起来很好...(例如在大尺寸 iPhone 使用横屏,或者全屏 iPad 任一方向),而其它所有尺寸配置使用垂直布局。...这都是因为事实证明 Layout 不仅仅是我们第三方开发者 API ,Apple 也让 SwiftUI 自己布局容器使用这个新协议 。...因为 VStack 可能总是合适,即使在我们希望布局是横向情况下(例如 iPad 全屏模式)。

2.8K10

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

运行下面的代码,点击左上方返回按钮,与 NavigationStack 绑定 path,直到视图返回一层后,才会发生改变。通过环境值返回上层视图也同样需要等待视图返回后,才会修改状态。...它复现条件非常简单:在真机上测试( 模拟器不容易复现 )点击 “GO” 按钮进入下一层视图点击 “Show Sheet” 按钮弹出 Sheet通过下滑手势取消 Sheet在 Sheet 取消后(动画结束时...它复现条件如下:iOS 16 系统,在真机或模拟器测试点击视图列表中按钮,可以进入下一级视图。...如果我们认为问题出在这里,就需要使用编程式导航方式来调整代码。为了不影响用户使用习惯,我们禁用了 NavigationStack 自带 Back 按钮。...通过自定义返回按钮以及扩展 UINavigationController 方式,实现了在禁用 Back 按钮后仍支持手势返回,并先修改状态后再进行视图响应。

609110

自定义 Button 外观和交互行为

欢迎大家在 Discord 频道[2] 中进行更多地交流可在 此处[3] 获取本文范例代码定制 Button 外观按钮是 UI 设计中经常会使用到组件。...相较于 UIKit ,SwiftUI 通过 Button 视图,让开发者以少量代码便可完成按钮创建工作。...ButtonStyle 和 PrimitiveButtonStyle 是专门针对按钮样式 API ,它们不仅可以应用于 Button 视图,也可以应用于很多 SwiftUI 预置系统按钮功能之上,例如...系统预置 Style从 iOS 15 开始,SwiftUI 在原有 PlainButtonStyle、DefaultButtonStyle 基础,提供了更加丰富预置 Style。...默认情况下,即使单元格视图中包含了多个按钮SwiftUI 也只会将 List 单元格视作一个按钮( 点击后同时调用所有按钮操作 )。

3.7K60

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

视图变化在前、状态变化在后 在 SwiftUI 中,某些可编程控件在执行一定操作时,会先更新视图,待视图变化完成后再修改与其对应状态。这些控件基本都是对 UIkit(AppKit)二次包装。...它复现条件非常简单: 在真机上测试( 模拟器不容易复现 ) 点击 “GO” 按钮进入下一层视图 点击 “Show Sheet” 按钮弹出 Sheet 通过下滑手势取消 Sheet 在 Sheet 取消后...它复现条件如下: iOS 16 系统,在真机或模拟器测试 点击视图列表中按钮,可以进入下一级视图。...如果我们认为问题出在这里,就需要使用编程式导航方式来调整代码。 为了不影响用户使用习惯,我们禁用了 NavigationStack 自带 Back 按钮。...通过自定义返回按钮以及扩展 UINavigationController 方式,实现了在禁用 Back 按钮后仍支持手势返回,并先修改状态后再进行视图响应。

29020

SwiftUI 视图中打开 URL 若干方法

本文范例代码是在 Swift Playgrounds 4.1 ( macOS 版本 )中完成,可在 此处下载[2]。...image-20220520182722773 SwiftUI 1.0( iOS 13、Catalina ) 在视图中,开发者通常需要处理两种不同打开 URL 情况: 点击一个按钮( 或类似的部件...@fatbobman.com" // 类型为 String Text(text) // 参数类型为 String 构造器不支持自动识别 Text 用例 2 :识别 Markdown 语法中 URL...NSDataDetector[5] 是 NSRegularExpression 子类,它可以检测自然语言文本中半结构化信息,日期、地址、链接、电话号码、交通信息等内容,它被广泛应用于苹果提供各种系统应用中....tint(.pink) image-20220520151737202 相较 Text 中链接固定样式,可以用 Button 或 Link 创建可以自由定制外观链接按钮: Button(action

7.6K31

SwiftUI 状态管理系统指南

前言 SwiftUI与苹果之前UI框架区别不仅仅在于如何定义视图和其他UI组件,还在于如何在整个使用它应用程序中管理视图层级状态。...属性状态 由于SwiftUI主要是一个UI框架(尽管它也开始获得用于定义更高层次结构(应用程序和场景)API),其声明式设计不一定需要影响应用程序整个模型和数据层——而只是直接绑定到我们各种视图状态...现在,我们可以用许多不同方式来描述这样一个对象,但由于我们正在寻找创建一个类型来控制我们一个模型实例——让我们把它变成一个符合SwiftUIObservableObject协议模型控制器[2]...: SwiftUI视图不是对正在屏幕渲染实际UI组件引用,而是描述我们UI轻量级值——因此它们没有像UIView实例那样生命周期。...——我们可以将其应用于我们层次结构中任何在其之上视图。

5K20

linux服务器搭建之路7-通过rdesktop远程连接win10

,最终还是选择在centos远程连接win10.本文主要介绍如何在centos7通过rdesktop远程连接win10. 1. centosrdesktop安装 安装依赖: 安装rdesktop...+Tab)不传递到远程桌面 -S: 标题按钮大小,个人觉得这个参数很无用,或者我还没弄明白到底什么意思。...-P: 持久位图缓存 -r: 设备重定向(参数可以重复使用)注:windows下mstsc开启串行口、本地磁盘、打印机等 ‘-r comport:COM1=/dev/ttyS0’: enable...serial redirection of /dev/ttyS0 to COM1 把LinuxttyS0映射到远程windowsCOM1口 or COM1=/dev/ttyS0,COM2...: -g: 桌面分辨率(宽x高) -f: 全屏模式(Ctrl + Alt + Enter 退出全屏模式) -D: 不显示窗口标题栏(只有远程桌面窗口,没有关闭和最小化按钮) -T: 窗口标题 -

4.8K40

肘子 Swift 周报 #009

原创 SwiftUI geometryGroup() 指南:从原理到实践[2] fatbobman(东坡肘子)[3] 在 WWDC 2023 中,苹果为 SwiftUI 添加了一个新修饰器:geometryGroup...在 Natalia Using Observation framework outside of SwiftUI[6] 这篇文章基础,Matthaus Woolard 进一步探讨了将观察封装进...Kyle Ye 从发现 Link 在 watchOS 无法直接打开链接问题入手,深入研究了 Link 组件内部实现,最终找到了一种无需通过 ASWebAuthenticationSession 新解决方案...本文是 Majid Jabrayilov 关于 MapKit 系列文章第一篇,主要介绍了集成 MapKit 基础知识。后续作者还将覆盖更高级主题,相机操作、地图控件等内容。...Colucci 分析并统计了在最新 macOS Sonoma 14 中,苹果使用编程语言和 UI 框架数据。

12410

SwiftUI-跨平台

在教程一开始,我们就说过 SwiftUI 是跨平台,本文主要讲解当开发好基于 iOS App 以后,如何快速实现 watchOS 和 macOS 跨平台 App。...根据当前设备尺寸与分辨率,调整 App UI 进行适配。 修改完成以后,在运行按钮,可供选择 Target 就有了刚刚创建 watchOS App,然后选择一个模拟器(或真机)运行即可。...创建macOS App 给当前项目添加 macOS Target,选择 Xcode 菜单:File > New > Target > macOS > App。...修改完成以后,在运行按钮,可供选择 Target 就有了刚刚创建 macOS App,然后直接运行,该 App 就会直接运行到当前电脑。...案例 以前面提过天气预报列表为例来看看 SwiftUI 如何实现跨平台 App 开发。

1.8K20

肘子 Swift 周报 #038 | 更好还是更便宜?

对这部分用户而言,他们期待下一代产品在佩戴舒适度、性能和显示效果进一步提升。 尽管对大多数消费者而言,AVP 价格偏高,但正是这个价格区间使其在特定领域提供了超越竞争对手性能和体验。...本文不仅比较了 WebSocket 与其他实时通信技术( HTTP 长轮询、HTTP 流、Comet 和 SSE)差异,还强调了这些方法在协议层面的局限性。...然而,与基于 AppDelegate 传统方法相比,ScenePhase 在处理应用启动和终止等关键事件时显得力不从心。...作者指出,当前 ScenePhase API 过度依赖窗口管理,未能全面覆盖应用状态变化,特别是在 macOS 上表现不佳,而在 iOS 虽表现更佳,但仍有改进空间。...参考资料 [1] weekly.fatbobman.com: https://weekly.fatbobman.com [2] 肘子 Swift 记事本: https://fatbobman.com

9610
领券