由于本问题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
我正在搞乱 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)
尝试更改持续时间参数,看看您是否可以注意到动画变慢。我高达 …
我需要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) 我想用来.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) 如何将类似导航的标题添加到 NavigationLink 的目的地?
\n请注意,该代码不是我的;它来自 Hacking With Swift 的网站。
\n主导航视图的屏幕截图
\n\n如何将与第一个屏幕截图中的标题类似的标题添加到第二个屏幕截图中的目标链接?最好该标题与后退按钮水平相邻。
\n代码:
\nstruct 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) 这里有两个 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) swiftui ×6
animation ×1
identifiable ×1
input ×1
navigation ×1
protocols ×1
sf-symbols ×1
shading ×1
swift ×1