小编Joh*_*sen的帖子

TabView 中的 SwiftUI 导航标题

由于本问题SwiftUI TabView 亮度视图垂直位置中概述的答案中概述的原因,我的应用程序的菜单结构是NavigationView-> TabView-> 具有不同导航标题的子视图。

问题是为.navigationTitle整个 TabView 提供一个导航标题,而不是为每个子视图提供一个导航标题。如何拥有多个导航标题TabView,每个子视图一个?

struct ContentView: View {
    var body: some View {
        NavigationView {
            TabView {
                Text("Hello")
                    .navigationTitle("Title One")
                    .tabItem {
                        Image(systemName: "square.stack")
                }
                Text("Hello Again")
                    .navigationTitle("Title Two")
                    .tabItem {
                        Image(systemName: "checkmark.square")
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

swiftui swiftui-navigationlink swiftui-tabview swiftui-navigationview

10
推荐指数
1
解决办法
6925
查看次数

Swift UI 上的持续时间参数 withAnimation(.linear)

我正在搞乱 Swift UI 的线性动画技术,并注意到,与我的预期相反,增加持续时间似乎并没有使动画发生得更慢。这是故意的吗?如果是这样,我该如何制作较慢的动画?

示例代码:

struct ButtonView: View {
    @State var show: Bool = false
    var body: some View {
        ZStack{
            if show {
                withAnimation(.linear(duration: 50)) {
                    CollapsibleView()
                }
            }
        }
        Button(action: { show = !show }) {
            Text("Press Me")
        }
    }
}


struct CollapsibleView: View {
    var body: some View {
        VStack {
            Text("Text 1")
            Text("Text 2")
            Text("Text 3")
        }
    }
}

@main
struct app: App {
    var body: some Scene {
        WindowGroup {
            ButtonView()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试更改持续时间参数,看看您是否可以注意到动画变慢。我高达 …

animation swift swiftui

9
推荐指数
1
解决办法
8097
查看次数

Swift 符合可识别现有属性

我需要ForEach一个结构数组,因此它们每个都必须符合Identifiable协议。但由于这些结构是从获取的 JSON 中解码的,因此它们已经有一个 id 属性——我的数据库中使用的 id。我应该给他们另一个 UUID 来满足Identifiable协议吗?如果没有,如何使用现有属性作为 id?

struct Event: Codable, Identifiable {
    let eventID: String
    let description: String
    let date: String
    let location: String
    let hostID: String
    let hostName: String

    // need?
    let id = UUID()
}
Run Code Online (Sandbox Code Playgroud)

protocols swiftui identifiable

6
推荐指数
1
解决办法
3673
查看次数

SwiftUI SubmitLabel 不适用于文本编辑器

我想用来.submitLabel将“返回”键更改为其他键(即.done),但它似乎不适用于 TextEditor 输入表单。是应该的吗?

示例代码:

struct ContentView: View {
    @State var text: String = ""

    var body: some View {
        Form {
            TextEditor(text: $text)
                .submitLabel(.search)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

input swiftui

6
推荐指数
1
解决办法
1189
查看次数

NavigationLink 目标上的 SwiftUI NavigationTitle

如何将类似导航的标题添加到 NavigationLink 的目的地?

\n

请注意,该代码不是我的;它来自 Hacking With Swift 的网站。

\n

主导航视图的屏幕截图

\n

在此输入图像描述\n在此输入图像描述

\n

如何将与第一个屏幕截图中的标题类似的标题添加到第二个屏幕截图中的目标链接?最好该标题与后退按钮水平相邻。

\n

代码:

\n
struct ContentView: View {\n    var body: some View {\n        NavigationView {\n            VStack(spacing: 30) {\n                Text("You\'re going to flip a coin \xe2\x80\x93 do you want to choose heads or tails?")\n\n                NavigationLink(destination: ResultView(choice: "Heads")) {\n                    Text("Choose Heads")\n                }\n\n                NavigationLink(destination: ResultView(choice: "Tails")) {\n                    Text("Choose Tails")\n                }\n            }\n            .navigationTitle("Navigation")\n        }\n    }\n}\n\nstruct ResultView: View {\n    var choice: String\n\n    var body: some View {\n        Text("You chose \\(choice)")\n    }\n}\n …
Run Code Online (Sandbox Code Playgroud)

navigation swiftui

5
推荐指数
1
解决办法
2615
查看次数

Swift UI 阴影仅在符号之外

这里有两个 SF 符号,其中一个带有一些阴影。

在此输入图像描述

正如您所看到的,不仅第二个符号的外部有阴影,内部也有阴影。我如何仅对外部进行着色,而使内部空白保持白色而不是阴影?理想情况下,解决方案适用于其他 SF 符号,因为我计划对不仅仅是这个符号进行着色。

代码:

struct exampleSymbol: View {
    var body: some View {
        Image(systemName: "text.bubble.fill")
            .foregroundColor(.blue)
            .font(.system(size: 100))
    }
}

struct stack: View {
    var body: some View {
        VStack {
            exampleSymbol()
            exampleSymbol()
                .shadow(color: .gray, radius: 2, x: 3, y: 3)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

shading swiftui sf-symbols

3
推荐指数
1
解决办法
683
查看次数