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

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

Table 中上下文菜单Q:如果我 TABLE 上添加了一个上下文菜单,我如何确定哪一行导致了菜单显示(无需选择该行)?...Swiftcord[12] 代码展示了如何SwiftUI 下实现倒置列表。阅读 优化 SwiftUI List 中显示大数据集响应效率[13] 一文,了解苹果工程师推荐方法。...TextField 内容验证Q:如何实现一个只接受数字 SwiftUI TextField,小数是允许。A:向文本字段提供 FormatStyle 以实现自动将文本转换为各种数字。...macOS APIQ:对于运行 Monterey Mac,能否如何SwiftUI 中实现下面需求建议:打开一个窗口该窗口中初始化数据找到所有打开窗口确定一个窗口是否打开从不在该窗口图中关闭一个窗口...另外,sheet 和 alert 内容都采用了 ViewBuilders,所以你可以以类似于处理 toolbar 内容方式将其提取到函数或计算属性中。

14.7K30

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

Ask Apple 为开发者与苹果工程师创造了 WWDC 之外进行直接交流机会。本文对本次活动中与 SwiftUI 有关一些问答进行了整理,添加了一点个人见解。本文为上篇。...比如说我可以父级视图中拥有 StateObject,通过 EnvironmentObject 传递该对象。然而,如果里面的 @Published 属性改变了,父视图和它子树也都被重新计算。...阅读 SwiftUI 动画机制[8] 一文,了解更多有关动画内容。自适应高度 SheetQ:如何在 iOS16 中呈现与动态内容高度相匹配 Sheet?...只允许打开该内容类型文件,但不能进行编辑。MVVMQ: UIKit 时代,MVVM 是一种常见架构,视图显示数据来自一个单独 viewModel 类。...在有些情况下,我想根据视图是否折叠来做决定( 例如,如果展开,详细视图中显示一条信息,如果折叠,则显示一个警告或其他指示 )。

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

SwiftUI 中实现视图居中若干种方法

欢迎大家 Discord 频道[2] 中进行更多地交流将某个视图父视图中居中显示是一个常见需求,即使对于 SwiftUI 初学者来说这也并非难事。... SwiftUI 中,有很多手段可以达成此目的。本文将介绍其中一些方法,对每种方法背后实现原理、适用场景以及注意事项做以说明。...需求实现下图中展示样式:彩色矩形视图中居中显示单行 Textimage-20220829142518962填充物Spacer最常见也是最容易想到解决方案。...文本内容超出了矩形宽度Spacer 是有最小厚度设定,默认最小垫片厚度为 8px 。...万变不离其宗,掌握了 SwiftUI 布局原理,无论需求如何变化都可轻松应对。

6.6K40

SwiftUI 中用 Text 实现图文混排

如果 Text 视图无法在给定建议宽度内显示全部内容,在建议高度允许情况下( 没有限制高度或显示行数 ),Text 会对内容进行换行处理,通过多行显示方式保证内容完整性。...动态类型( Dynamic Type )功能允许使用者设备端设置屏幕上显示文本内容大小。它可以帮助那些需要较大文本以提高可读性用户,还能满足那些可以阅读较小文字的人,让更多信息出现在屏幕上。...从上图中可以看出,动态类型仅对文本有效,Text 中图片尺寸并不会发生改变。使用 Text 实现图文混排时,如果图片不能伴随文本尺寸变化而变化,就会出现上图中结果。...一个有关图文混排问题前几天聊天室[8]中,一个朋友询问 SwiftUI 是否能实现下图中 tag( 超市标签 )+ 商品介绍版式效果。...限于篇幅,下文中将不会对范例代码做详尽讲解,建议你结合本文附带 范例代码[10] 一阅读接下来内容

4.3K30

避免 SwiftUI 视图重复计算

仅被保存在 State 实例内部属性 _value 中,此时,使用 Stae 包装变量值没有被保存在 SwiftUI 托管数据池中,并且 SwiftUI 也尚未在属性图中将其作为 Source...当 SwiftUI 将视图加载到视图树时,通过调用 _makeProperty 完成将数据保存到托管数据池以及属性图中创建关联操作,并将数据托管数据池中引用保存在 _location ( AnyLocation...当 SwiftUI 将视图从视图树上删除时,会一完成对 SwiftUI 数据池以及关联清理工作。如此,使用 State 包装变量,其存续期将与视图存续期保持完全一致。...例如:当 SwiftUI 更新 ContentView 时,如果 SubView 构造参数( name 、age )内容发生了变化,SwiftUI 会对 SubView body 重新求值(...会在主线程上运行触发器闭包,如果闭包中操作比较昂贵,可以考虑将闭包发送到后台队列 总结 本文介绍了一些 SwiftUI如何避免造成视图重复计算技巧,除了从中查找是否有能解决你当前问题方法外

9.2K81

SwiftUI内容边距

前言SwiftUI 引入了一组视图修饰符,使我们能够有效地管理视图中安全区域。许多情况下,安全区域是你希望放置内容地方。... iPhone 上可能看起来很好,但是 iPad 上,它看起来非常奇怪,因为它将所有文本放在了前导边缘,保持屏幕中央为空白。...幸运是,SwiftUI 引入了新 contentMargins 视图修饰符,使我们能够图中移动特定类型内容。...文章从创建示例开始,展示了列表视图中如何处理内容边距问题。...最后,引入了 contentMargins 视图修饰符,详细解释了其用法和参数,以及如何使用它来管理内容边距。通过本文,读者可以更好地理解掌握 SwiftUI内容边距管理技巧。

13132

SwiftUI 与 Core Data —— 数据获取

本文中我们将探讨 SwiftUI图中批量获取 Core Data 数据方式,尝试创建一个可以使用 mock 数据 FetchRequest。...NSFetchedResultsController 获取首批数据操作是从 onAppear 中发起,由于 TCA Action 处理机制,数据首次显示有可感知延迟( 效果远不如在视图中通过...)以方便开发者快速调整 UITableView 显示内容( 无需刷新全部数据 )。...创建自定义 DynamicProperty 类型时,需要注意以下几点:可以自定义类型中使用环境值或环境对象视图被加载后,视图中所有符合 DynamicProperty 协议类型也将一具备访问环境数据能力...在下一篇文章中,我们将探讨如何SwiftUI 中安全地响应数据,如何避免因为数据意外丢失而导致行为异常以及应用崩溃。希望本文能够对你有所帮助。

4.6K30

肘子 Swift 周报 #015 | 新框架、新思维

文章详尽地阐述了如何从 ObservableObject 和@Published 平稳过渡到@Observable 方法,着重讨论了采用@Observable 带来优势,尤其是管理多个视图模型属性时...这些内容源自作者开发其独立摄像头应用 PhotonCam 时实际体验。文中不仅列举了多种常见问题,还提供了具体处理方法。...因此,作者着手自主开发了一个纠错工具,并已将其作为开源项目发布。文章中,作者详尽地介绍了这一工具技术实施方案,涵盖了从文本文件检测、分句处理到词语检测和整体工具集成各个环节。...他还分享了开发过程中遇到一些主要挑战,如如何准确识别文本文件、进行文本分句校准、中文纠错检测与校准,以及非终端环境中实现与 python 脚本互通。...文章详细总结了 Git 中合并和分支日常操作,强调了掌握不同合并技巧重要性。Wals 提醒读者,处理合并冲突时保持冷静和耐心至关重要,建议需要时寻求同事帮助。

12710

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

人们可以使用连接鼠标、触控板或键盘与项目交互、触发菜单命令和执行手势。 构建运行你app页面链接 模拟器中构建运行你应用,看看它看起来如何。...系统将每个窗口放置初始位置,根据与应用程序进一步交互更新该位置。 将3D内容添加到应用程序中 为您visionOS应用程序添加深度和维度,并发现如何将您应用程序内容融入人周围环境。...在为visionOS构建应用程序时,请考虑如何为应用程序界面添加深度。该系统提供了几种显示3D内容方法,包括现有窗口中,卷中以及沉浸式空间中。选择最适合你应用和你提供内容选项。...当你准备界面中显示3D内容时,使用RealityView。这个SwiftUI视图作为你RealityKit内容容器,允许你使用熟悉SwiftUI技术更新内容。...要创建一个volume,添加一个WindowGroup场景到你应用程序,并将其样式设置为volumetric。这个样式告诉SwiftUI为3D内容创建一个窗口。卷中包含您想要任何2D或3D视图。

74040

掌握 ViewThatFits

iOS 16 中,SwiftUI 增加了一个新自适应布局容器 ViewThatFits。正如其名称所示,它作用是在给定多个视图中找出最合适视图使用。...ViewThatFits 判断和呈现逻辑 既然 ViewThatFits 是从给定图中挑选出最合适那个,那么它判断依据是什么呢?判断顺序如何?最终又如何呈现呢?...它只检查阶段使用子视图理想尺寸进行判断,最终呈现阶段,它将向子视图提交有值建议尺寸,使用子视图需求尺寸作为自身需求尺寸。...用易懂描述就是,在有明确宽度限定情况下,要求 Text 显示全部文本内容。...100 建议尺寸高度,充分利用了垂直方向上空间,将完整文本内容呈现出来。

17010

SwiftUI属性包装器如何处理结构体

已经了解了 SwiftUI 如何通过使用 @State 属性包装器将变化数据存储结构体中,如何使用 $ 将状态绑定到UI控件值,以及更改 @state 包装属性时是如何自动让 SwiftUI 重新调用我们结构体...为了了解这里发生事情,我希望您考虑一下我们使用 Core Data 时:我们使用 @FetchRequest 属性包装器查询我们数据,但我还向您展示了如何直接使用 FetchRequest 结构体...之前我曾解释说,我们无法图中修改属性,因为它们是结构体,因此是固定。但是,现在您知道 @State 本身会生成一个结构体,因此我们面临一个难题:如何修改该结构体?...现在将其激活,然后输入 "State"——希望第一个结果在其下方显示 SwiftUI,但如果没有,请找到选择它。...在后台,它将值发送给SwiftUI以便存储可以自由修改位置,因此,结构体本身永不改变。

1.7K10

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

每当您将其设置为非 nil 值时,就会显示全屏封面的内容。...这个 CALayer 子类就像任何其他层:它显示其contents属性中任何内容。 该层恰好用您通过其player属性提供视频中帧填充其内容。...2) 您使用初始值设定项创建 LoopingPlayerUIView 新实例返回新实例。 3) SwiftUI 需要更新底层 UIView 时会调用此方法。 现在,将其留空。...缺点是,撰写本文时,iOS 14.5是可用最新版本,VideoPlayer SwiftUI 视图未显示画中画按钮。...创建一个名为 VideoPlayerView.swift 文件并将其内容替换为以下内容: import SwiftUI // 1 import AVKit // 2 struct VideoPlayerView

6.9K10

SwiftUI中使用UIKit视图

本文将通过对UITextField包装来讲解以下几点: •如何SwiftUI中使用UIKit视图•如何让你UIKit包装视图具有SwiftUI风格•SwiftUI使用UIKit视图需要注意地方...•处理UIKit视图中复杂逻辑UIKit开发中,通常会将业务逻辑放置UIViewController中,SwiftUI没有Controller这个概念,视图仅是状态呈现。...如果按照TextField正常行为,当我们在其中输入任何文本时,下方Text中应该显示出对应内容,不过我们当前代码版本中,并没有表现出预期行为。...尽管我们声明了一个Binding类型text,并且makeUIView中将其赋值给了textfield,不过UITextField并不会将我们录入内容自动回传给Binding<String...因此我们需要创建协调器,并在协调器中实现该方法,将录入内容传递给Demo视图中name变量。

8.1K20

架构之路 (五) —— VIPER架构模式(一)

开始 首先看下主要内容本教程中,您将了解如何SwiftUI和Combine中使用VIPER体系结构模式,同时构建一个允许用户创建公路旅行iOS应用程序,来自翻译。...Data Sources组中,有用于保存或加载数据辅助函数。 如果您喜欢WaypointModule组中查看前面的内容。它有一个Waypoint编辑屏幕VIPER实现。...路由器Router处理屏幕之间导航。这与SwiftUI不同,SwiftUI中,视图显示任何新视图。...SwiftUI将所有目标视图声明为当前视图一部分,根据视图状态显示它们。...$waypoints .assign(to: \.waypoints, on: self) .store(in: &cancellables) 第一个订阅获取与interactor原始距离,并将其格式化以便在视图中显示

17.4K10

SwiftUI 布局:如何自定义 AlignmentGuides

SwiftUI 为我们提供了视图不同边缘对齐指南(.leading、trailing、top等)以及.center和两个基线选项来帮助文本对齐。...为了解决这个问题,SwiftUI 允许我们创建自定义对齐辅助线,并在整个 UI 图中使用这些辅助线。在这些视图之前或之后发生什么并不重要,它们仍然会排成一条线。...例如,下面的布局左侧显示 Twitter 帐户名和我个人资料图片,右侧显示 “Full name:” 加上 “Wei Xian” 大号字体: struct ContentView: View...无论您选择是枚举还是结构体,其用法都保持不变:将其设置为堆栈对齐方式,然后使用alignmentGuide()在要对齐任何视图上激活它。...我建议您尝试我们示例前后添加更多文本视图 –SwiftUI 将重新定位所有内容,以确保我们对齐两个视图保持不变。

98710

SwiftU:将状态绑定到UI控件

但是,该代码不会编译,因为SwiftUI想知道文本字段中文本存储位置。 请记住,视图是其状态函数——文本输入框只能在反映存储程序中值时显示某些内容。...SwiftUI需要是结构中一个字符串属性,它可以显示文本输入框中,还将存储用户文本输入框中键入任何内容。...但是,该代码仍然无法工作,因为Swift需要能够更新name属性以匹配用户文本字段中键入任何内容,因此您可以使用`@State``,如下所示: @State private var name = "...问题是Swift区分了“在此处显示此属性值”和“在此处显示此属性值,但将任何更改写回该属性” Swift中,我们用一个特殊符号来标记这些双向绑定,这样它们就很显眼:我们它们前面写一个美元符号$...继续之前,让我们修改文本视图,使其文本字段正下方显示用户名: Text("Your name is \(name)") 注意它是如何使用name而不是$name?

2.9K10

如何SwiftUI图中显示应用图标和版本

本文中,我将展示如何创建一个可访问 SwiftUI 视图,既能显示应用图标和版本,又能在各种文本大小和外观下看起来都很好:获取应用图标构建视图第一步是从主包中获取应用图标。...创建 SwiftUI 视图现在让我们将所有内容结合起来,创建一个 SwiftUI 视图,显示应用图标和版本:AppVersionInformationView.swiftimport SwiftUIstruct...这些值通过我们之前创建提供者传递给视图。我们一个水平堆栈中显示应用图标和版本,间距为12点。我们 Image 视图中显示应用图标。...但是,应用图标只能作为命名 UIImage 检索,所以我们需要先创建 UIImage,然后再转换为 SwiftUI Image。我们一个垂直堆栈中显示应用版本,包括一个标签和应用版本字符串。...最终结果是一个各种文本大小下都看起来很好视图:应用中显示版本信息视图Copy codeContentView.swiftimport SwiftUIstruct ContentView: View

11922

SwiftUI 布局 —— 尺寸( 上 )

本文将从布局角度入手,为你揭开盖 SwiftUI 尺寸概念上面纱,了解掌握 SwiftUI 中众多尺寸含义与用法;通过创建符合 Layout 协议 frame 和 fixedSize 视图修饰器复制品...但由于 SwiftUI 视图并没有提供尺寸这一属性,因此即使 SwiftUI 诞生了数年后今天,如何获取视图尺寸仍然是网络上热门问题。...( 85.33 x 20.33 ,因为 ZStack 提供建议尺寸大于 Text 实际需求,因此 Text 需求尺寸为对文本不折行,不省略完整显示尺寸) ZStack 向 SwiftUI 布局系统返回了自己需求尺寸...视图尺寸 视图渲染后屏幕上呈现尺寸,也是热门提问 —— 如何获取视图尺寸中所指尺寸。 图中可以通过 GeometryReader 获取特定视图尺寸及位置。...例如在上文中,SwiftUI 为所有的 Shape 设置默认理想尺寸为 10 x 10 ,Text 默认理想尺寸为单行完整显示全部内容所需尺寸。

4.7K20
领券