Swift是Apple Inc.为其平台和Linux开发的通用开源编程语言。仅将标记用于有关语言功能的问题,或在Swift中需要代码。使用标签[ios],[macos],[watch-os],[tvos],[cocoa-touch]和[cocoa]来获取有关平台或框架的(语言无关的)问题。
我有一个列表来表示日期列表 它显示如屏幕截图的上侧 我想知道如何单击列表中的另一个日期并根据新数据生成动态视图...
如何让 SwiftUI Shape View 符合相邻视图的尺寸
简单说明: 我显示了一个 SwiftUI Capsule() 以在 Text() 视图旁边显示状态颜色。到目前为止,在所有情况下,胶囊都在带有文本视图的 HStack 中使用。 我愿意...
我需要运行函数A,在运行函数B之前完成函数A,在函数C启动之前完成函数B,并且我的await语句不起作用并且函数正在运行...
Stripe Webhook Node.js Firebase 函数
看看为什么我在 Stripe 仪表板中获得 200 成功,但在我的 Firebase 函数日志中,我看到此函数被调用两次,一次是成功 200,第二次是 400 错误。我添加了...
我有两个不同大小的图像,我想使用 CIFilter 将它们合成在一起。图像A 尺寸为2400x1800。 ImageB 尺寸为 1200x900。 由于两幅图像尺寸不同,当图像
Swift 自定义 LocalizedError 在调用者 CatchBlock 中丢失失败原因
第一次尝试尝试错误处理和错误概念。所以我找到了这种创建错误枚举的方法。符合 LocalizedError 协议,我预计失败原因为
我正在开发一个 NumberedList 组件,其工作方式类似于 HTML 中的 标签。我希望能够提供任意数量的元素,这些元素将自动编号和布局。 我正在开发一个 NumberedList 组件,其工作方式类似于 HTML 中的 <ol> 标签。我希望能够提供任意数量的元素,这些元素将自动编号和布局。然而,布局的一个方面我不太明白。 我创建了一个 OrderedList 视图(相当于 <ol> HTML 标签),它使用 _VariadicView.Tree 和自定义 _VariadicView_UnaryViewRoot 布局。 public struct OrderedList<Content: View>: View { let content: Content @Environment(\.listLevel) var level public init(@ViewBuilder content: () -> Content) { self.content = content() } public var body: some View { let layout = OrderedListLayout(level: level) _VariadicView.Tree(layout) { content } } } struct OrderedListLayout: _VariadicView_UnaryViewRoot { let level: ListLevel @ViewBuilder func body(children: _VariadicView.Children) -> some View { let padding: Double = switch level { case .first: 8 case .second, .third: -6 } VStack(alignment: .leading, spacing: 8) { ForEach(Array(children.enumerated()), id: \.element.id) { index, child in HStack(alignment: .centerOfFirstLine, spacing: 8) { Text(verbatim: "\(index + 1).") child } } } .frame(maxWidth: .infinity, alignment: .leading) .padding(.leading, padding) } } 此列表旨在与 ListElement 视图(相当于 <li> HTML 标签)一起使用,该视图可以包含任意标签和可选的子视图。 public struct ListElement<Label: View, Child: View>: View { let label: Label let child: Child? @Environment(\.listLevel) var level public init(@ViewBuilder label: () -> Label, @ViewBuilder child: () -> Child) { self.label = label() self.child = child() } public var body: some View { VStack(alignment: .leading, spacing: 8) { label if let child { child .environment(\.listLevel, level.next()) } } } } public extension ListElement where Child == EmptyView { init(@ViewBuilder label: () -> Label) { self.label = label() self.child = nil } } 此屏幕截图显示了当前结果。我在编号文本中添加了绿色边框,在列表元素中添加了蓝色边框,以更好地显示它们如何不对齐。我希望能够布局元素,以便同一列表级别中所有元素的前导对齐。本质上我希望所有编号文本具有相同的宽度。 从技术上讲,我可以使用 Grid 来帮助进行这种布局。但是,我认为这行不通,因为我希望能够在需要时嵌套多个列表。我认为解决方案可能在于使用自定义 HorizontalAlignment 指南或自定义 Layout,但我无法完全理解它。 有两种方法可以实现这一目标: 创建虚拟节点来计算所需的宽度 使用onGeometryChange计算每个编号文本的最大宽度 这是使用第二种方法的演示: import SwiftUI struct ListWithEqualNumberWidth: View { @State private var numberWidth: CGFloat = 0 @State private var rows = [ "The standard Lorem Ipsum passage, used since the 1500s", "Section 1.10.32 of de Finibus Bonorum et Malorum, written by Cicero in 45 BC", "1914 translation by H. Rackham", "Section 1.10.33 of de Finibus Bonorum et Malorum, written by Cicero in 45 BC", "The standard Lorem Ipsum passage, used since the 1500s", "Section 1.10.32 of de Finibus Bonorum et Malorum, written by Cicero in 45 BC", "1914 translation by H. Rackham", "Section 1.10.33 of de Finibus Bonorum et Malorum, written by Cicero in 45 BC", "The standard Lorem Ipsum passage, used since the 1500s", "Section 1.10.32 of de Finibus Bonorum et Malorum, written by Cicero in 45 BC", "1914 translation by H. Rackham", "Section 1.10.33 of de Finibus Bonorum et Malorum, written by Cicero in 45 BC", "The standard Lorem Ipsum passage, used since the 1500s", "Section 1.10.32 of de Finibus Bonorum et Malorum, written by Cicero in 45 BC", "1914 translation by H. Rackham", "Section 1.10.33 of de Finibus Bonorum et Malorum, written by Cicero in 45 BC", ] var body: some View { List(rows.indices, id: \.self, rowContent: { index in HStack { ListNumber(number: index, onGeometryChange: { width in numberWidth = max(numberWidth, width) }) .frame(width: numberWidth + 10, alignment: .trailing) Text(rows[index]) } }) } } struct ListNumber: View { var number: Int var onGeometryChange: (CGFloat) -> Void var body: some View { HStack { Text(number.description) } .onGeometryChange( for: CGSize.self, of: { proxy in proxy.size }, action: { onGeometryChange($0.width) } ) } } 结果将是
我使用 HTML canvas 和 FabricJS 构建了一个基于 Web 的轻型 SVG 编辑器,具有简单的功能,例如(调整大小、旋转、拖动、着色)。现在出于好奇我想创建一个移动应用程序...
当两个函数的名称和参数类型太相似时,Swift 会调用错误的函数吗?
我有两个函数,每个函数都有相同的名称。参数几乎相同,但一个函数引用特定类,而另一个函数引用该特定类的基类。斯威夫特
如何将ios应用程序上传到互联网而不将其放入AppStore,以便您可以使用链接在iPhone上下载它?
我正在尝试将文本文件与我正在构建的 macOS 命令行工具捆绑在一起。我已将该文件添加到项目中,但似乎无法从代码访问它。我的项目如下所示: 还有
如何解决SwiftUI中播放视频时出现“AttributeGraph:通过属性检测到循环”的问题?
这是我在 SwiftUI 中播放视频的测试代码,视频第一次开始播放,但是当我更新其他视频的 url 时,它显示多行(10-20 次): “属性Gra...
如何通过像素化校正 UIView 和 UILabel 文本缩放?
当我将带有文本的 UILabel 添加到 UIView 然后缩放 UIView 时,内容会以像素化方式显示。比例因子越大,像素化越大。 我理解使用
将 OpenAI 集成到我的 Swift 应用程序时出现错误
我正在尝试制作一个应用程序,使用排名前 5 的医学期刊摘要向用户提供一个琐事问题,该问题将使用 openAI gpt 3.5 Turbo 生成。我不断收到错误...
使用 where 子句创建一个 Swift 扩展,该扩展对采用泛型的结构进行过滤
我正在尝试在 Set 上创建一个使用 where 子句的扩展,以便它仅适用于我拥有的接受泛型的结构。但我一直遇到关于扩展想要
我试图偏移图像以制作漂亮的个人资料视图,但图像被截断,如下图所示: 下面是代码: 导航栈{ 滚动视图(.垂直){ ...
在协议上声明静态函数有什么意义吗?使用协议的客户端无论如何都必须调用符合协议的类型上的函数,对吗?这打破了不...
如何添加采用格式参数的 TableColumn 初始值设定项,以便我可以格式化列的内容?
public init(_ titleKey: LocalizedStringKey, value: KeyPath, format: F) 其中 F : FormatStyle, F.FormatInput : Equatable, F.FormatOutput == String { 自我初始化(
CADisplayLink 可以在应用程序处于后台时运行吗?
我在我的应用程序中使用 CADisplayLink 作为计时器。我使用 CADisplayLink 因为我的应用程序严重依赖 CADisplayLink 的准确性/精度。 NSTimer 不是合适的替代品...
以先前状态模态重新打开 UINavigationController
使用故事板,我有一个按钮以模态方式呈现 UINavigationController (以 UITableViewController 作为根),允许用户选择行以将其他视图推送到堆栈上。 ...