问题标签 [swiftui]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swiftui - 如何为预览创建一个简单的绑定
有了新的@Binding
委托和预览,我发现总是必须创建一个@State static var
来创建必要的绑定有点尴尬:
有没有更简单的方法来创建绑定,代理一个简单的值来测试和预览?
swift - SwiftUI 中的预览是否真的需要 #if DEBUG 语句才能在发布版本中删除它?
预处理器宏在 SwiftUI 官方教程/视频中很常见,例如:
需要那些吗?编译器肯定可以看到struct
内部没有使用并省略整个struct
,因为访问修饰符是隐式的,internal
对吗?我认为符合的所有东西都PreviewProvider
可以删除,但也许不是每个符合的对象都是如此,但如果不使用它,为什么Apple决定包含预处理器宏?
我试图在发布模式下运行它并在派生数据文件夹中找到编译的类,但我对它一无所知(.o 文件)。任何人都可以确认我们是否真的需要在发布版本中包含宏以省略未使用的代码(ContentView_Previews 类型不会在代码中的任何地方使用,期望预览在发布版本中无论如何都不会使用)?
ios - SwiftUI TabbedView 仅显示第一个选项卡的内容
我正在尝试TabbedView
使用以下简单代码构建一个:
运行时,两个选项卡都可见并已启用,但第二个选项卡(“Foo”)的内容为空白。
ios - 如何在 swiftUI 中创建一个普通视图
我正在尝试在SwiftUI中创建具有背景颜色的普通视图。但我能找到的所有元素都不是普通视图,如文本、按钮、图像、列表等。
当我尝试使用View
时,它会显示以下错误消息:
- 无法构造“视图”,因为它没有可访问的初始化程序
- 'View' 协议只能用作通用约束,因为它具有 Self 或 associatedType 要求
如何创建具有背景颜色的矩形视图?
ios - SwiftUI 和 UIKit 与旧 API 中的 UIViewController 要求交互
场景:
我有一个简单的 SwiftUI 视图,如下所示:
现在理想情况下,在handleLogin
函数中,我只需执行 OAuth 请求并处理登录等。但是,我使用在 GitHub 上找到的库用于演示目的。
这个库有一个方法authorize(callBackUrl: URL, presentingController: UIViewController)
,当被调用时会显示一个允许用户登录到 twitter 的 safari 控制器。但是,要调用authorize
您需要传入一个符合SFSafariViewControllerDelegate
. 从我目前的基本理解来看View
,SwiftUI 中的类型不是视图控制器,而且SFSafariViewControllerDelegate
由于它是结构体,因此不符合。
我查看了Apples 网站上的与 UIKit 接口教程,他们似乎创建了一个UIViewControllerRepresentable
类型,然后从View
类型中返回这个“控制器body
” View
。这允许他们使用 UIKit 中的 PageViewController。但是,这并不完全是我拥有或需要的用例。我只需要能够以某种方式将我的简单View
转换为UIViewController
. 将是在这里使用的东西,如果UIHostingController
是这样,如何注入这种依赖关系,或者视图是否应该知道/使用控制器?
我的困惑主要在于还不知道 SwiftUI 的最佳实践是什么。该View
类型似乎取代了UIViewController
UIKit 中的使用,但是当与 UIKit 交互时,转换是如何工作的呢?
如果有人有任何想法或想讨论这个,我将不胜感激!谢谢。
animation - SwiftUI - 如何更改视图的层次位置?
这是一个不起作用的基本示例:
SwiftUI 无法弄清楚我认为第一个Color.green
和第二个Color.green
视图是同一个视图,所以当然动画只是将其中一个淡出,同时在新位置淡入另一个。我正在寻找向 SwiftUI 指示这些是相同视图并将其动画化到新位置的方法。我非常兴奋地发现了这个.id()
修饰符,因为我相信它会给我想要的效果:
不幸的是,这也不起作用。我对 SwiftUI 感到难以置信的兴奋,但在我看来,在保持视图标识的同时更改视图层次结构的能力非常重要。促使我考虑这一点的实际用例是,我有一些视图,我正在尝试为其创建粉丝动画。最简单的方法是让项目处于ZStack
一种状态,使它们都在彼此之上,然后让它们处于VStack
扇出状态,这样它们就可以垂直展开并且全部可见。从 a 更改为ZStack
aVStack
当然算作结构的更改,因此状态之间的所有连续性都丢失了,一切都只是交叉淡入淡出。有谁知道该怎么做?
swift - 尝试从 WWDC 会话重新创建基于 SwiftUI 的应用程序时的问题
我正在尝试重新创建 Session 204 中演示的 SwiftUI 项目,但遇到了一些特殊问题。
我是通过观看此处找到的会话写的:https ://developer.apple.com/videos/play/wwdc2019/204
这是我的代码-
内容视图.swift:
房间.swift:
RoomDetail.swift:
RoomStore.swift:
上述代码中包含在上下文中的错误消息,作为注释。