我正在尝试在 SwiftUI 中的应用程序上添加全屏视图。这样做的目的是要有一个淡入的“阴影”,使屏幕变暗并将焦点集中到自定义弹出窗口,从而禁用背景中的内容。请参阅下面的视觉示例:
我试图添加此阴影的视图嵌入在复杂的 NavigationView 堆栈中(几层深,通过 a 访问NavigationLink),并且还有一个可见的 TabBar。到目前为止,我已经尝试将NavigationViewa 嵌入ZStack并在顶部添加 aRectangle()但无济于事,NavigationBar 和 TabBar 仍然位于此视图的顶部。我也尝试过使用修饰符,.zIndex()但这似乎没有任何作用。
任何帮助深表感谢,
谢谢
我有一个名为 的可观察对象MyObject,它有一个名为 的已发布属性property。property是字符串。
我有这个
\n.onChange(of:myObject.property, perform: {\xc2\xa0value in\n}\nRun Code Online (Sandbox Code Playgroud)\n问题是value触发时包含属性的旧值。
苹果文档说你可以通过这样做来捕获属性的新值和旧值:
\n@State private var playState: PlayState = .paused\n\n\n.onChange(of: playState) { [playState] newState in\n print(playState, self.playState, newState)\n}\nRun Code Online (Sandbox Code Playgroud)\n我不知道应该如何针对我的情况输入命令。
\n我努力了
\n.onChange(of:myObject.property, perform: {\xc2\xa0[myObject.property] newValue in\nRun Code Online (Sandbox Code Playgroud)\n但 Xcode 说
\n\n\n捕获列表中应有“弱”、“无主”或无说明符
\n
有任何想法吗?
\n我正在使用 SwiftUI 构建一个选择器。
现在我想为每个选择添加一个图标和文本。所以它应该看起来像这样:
这可能吗?如果是的话怎么办?
或者苹果人机界面指南根本不推荐它?
我已经尝试使用 HStack 将图像和文本包装在一起。
enum Category: String, CaseIterable, Identifiable {
case person
case more
var id: String { self.rawValue }
}
struct ContentView: View {
@State private var category = Category.person
var body: some View {
Picker("Category", selection: $category) {
HStack {
Image(systemName: "person")
Text("Person")
}.tag(Category.person)
HStack {
Image(systemName: "ellipsis.circle")
Text("More")
}.tag(Category.more)
}.pickerStyle(SegmentedPickerStyle())
.padding()
}
}
Run Code Online (Sandbox Code Playgroud)
但该框架将其分为四部分。
我希望符合 ShapeStyle,目标只是符合 ShapeStyle(仅此而已)。
这是我的代码和问题:
struct MyContentView: View {
var body: some View {
Circle()
.fill(RedView())
}
}
struct RedView: View {
var body: some View {
Color.red
}
}
Run Code Online (Sandbox Code Playgroud)
所以我知道我可以直接使用Color.red而不是视图,但正如我所说,这个问题的目标是符合 ShapeStyle。对于那些要分享有关 ShapeStyle 的苹果开发人员链接的人,我不得不说我以前去过那里。
错误:
实例方法“fill(_:style:)”要求“RedView”符合“ShapeStyle”
我想制作带有偏移的抖动效果,希望在 30.0 和 -30.0 之间的起始和抖动处具有零偏移,覆盖此偏移:-30.0, 0.0, 30.0
但在编码中我不能有这 3 个选项,而我有 2 个选项,我的目标是从 0.0 开始,到 30.0,然后到 -30.0,最后到 0.0
struct ContentView: View {
@State private var start: Bool = false
var body: some View {
Image(systemName: "exclamationmark.triangle")
.font(Font.system(size: 50))
.offset(x: start ? 30.0 : -30.0)
.padding()
.animation(Animation.spring(response: 0.2, dampingFraction: 0.2, blendDuration: 0.2), value: start)
Button("Shake") {
start.toggle()
}
}
}
Run Code Online (Sandbox Code Playgroud) 当我想要终止我的应用程序时,我从 Xcode 收到以下消息:
没有 XPC 错误的错误处理程序:连接无效
我正在使用这段代码,它使按摩发生:
NSApplication.shared.terminate(self)
Run Code Online (Sandbox Code Playgroud) 我正在使用 tabView 的简单代码。当我更改模拟器的方向时,应用程序选项卡会向后跳一个选项卡。就像这样,如果您在第 2 页转到第 1 页,但无论我如何更改方向,它都必须保留在第 2 页。或者如果您在第 3 页,则跳转到第 2 页。为什么会发生这种不需要的跳转?
struct ContentView: View {
@State var currentPage: Int = 1
var body: some View {
ZStack
{
Color.gray.ignoresSafeArea()
TabView(selection: $currentPage)
{
Text("Hi 1").tag(0)
Text("Hi 2").tag(1)
Text("Hi 3").tag(2)
}
.indexViewStyle(PageIndexViewStyle(backgroundDisplayMode: .never))
.tabViewStyle(PageTabViewStyle())
}
}
}
Run Code Online (Sandbox Code Playgroud) 我想要模糊效果作为我的视图的背景,正如我们所知,我们可以模糊视图和里面的内容,但我不想要模糊视图内容,但我想要模糊背景视图来提供玻璃般的模糊效果,如下所示我们知道。我如何在 SwiftUi 中做到这一点?
换句话说,视图的下层将在当前视图上的帧中模糊,该视图设置为当前视图的背景。
我在桌面上创建了名为MyXCFramework.xcframework的 xcframework ,然后像Boris在 WWDC2020 中关于将二进制框架分发为 Swift 包时所说的那样将其压缩,这两个文件都在桌面上,我想获取校验和,然后我在终端中使用了这行代码:
cd ~/Desktop/
swift package compute-checksum ~/Desktop/MyXCFramework.xcframework.zip
Run Code Online (Sandbox Code Playgroud)
但终端出现此错误:
error: root manifest not found
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个错误?
我不知道为什么终端试图在这一点上体现?!因为还没有清单!我需要校验和来构建我的清单,以将二进制框架分发为 Swift 包。那么我该如何解决这个问题呢?
我想知道如何关闭或退出我的应用程序?我还有一些用于关闭应用程序的代码,但代码看起来不现代并且更新为 SwiftUI,我们是否有一些新的更好的代码?
import SwiftUI
@main
struct Work_Space_macOSApp: App {
var body: some Scene {
WindowGroup {
VStack {
Button("Close App") {
// Do we have more SwifUI-ish code for closing App?
NSApplication.shared.keyWindow?.close()
}
Button("Quit App") {
// How can I quit the app?
}
}
.frame(width: 200, height: 200)
}
}
}
Run Code Online (Sandbox Code Playgroud)