SwiftUI
为什么把属性改成 @Published会导致SwiftUI无法触发UI更新?
在我正在开发的一个应用中,我添加了一个TextEditor字段,用来显示应用文档的模型对象中 @Published Text属性的内容。 以下是模型对象的相关部分: final class DrawingInfo: ObservableObject, Codable { // Items saved with Codable @Published var title: String @Published var text: String @Published var toggleIsOn: Bool =
如何在Swift中实现App Store的搜索标签页界面?
我想做一个视图,其头部区域看起来就像App Store的搜索标签中的那一部分,但我做不到。 我不能使用 .navigationTitle,因为它会随着用户滚动而滚动,并且在滚动时还会折叠成一个内联视图。 我注意到Apple使用的是带有 .searchable 修饰符的同一个搜索栏。 但我不知道他们在滚动时是如何让标题和个人资料图标保持固定的位置。 我尝试过使用 .toolbarTitleDisplayMode(.inlineLarge),但一旦用户开始滚动,标题仍然会折叠成一个内联视图。 我也尝试把标题文
NavigationView中 List的大标题在设置背景色时不起作用
我遇到了一个非常奇怪的问题:如果我在NavigationView内放一个List,标题就会消失。但这只有在我设置背景颜色时才会发生。下面是能够工作的代码。 import SwiftUI struct ContentView: View { var body: some View { NavigationView { ZStack { Text("World") } .navigationTitle("Hello") .toolbarBackground(Color.pink.opacity(1),for:
SwiftUI的基于状态的视图切换没有生效
我一定漏掉了什么明显的地方。当 @Observable的类属性发生变化时,@State的属性却没有变化。 @Observable class AuthService { var userSession : String = "" // later after creating a new user self.userSession = username 对于视图来说 struct ContentView: View { @State private var auth = AuthService() var
如何在SwiftUI中把列表滚动到最顶部?
我尝试了各种技巧,但仍无法在SwiftUI中带有头部的列表滚动到最顶端的位置。下面给出一个最小可复现示例(MRE)。它能滚动到大致的顶部位置,但并不是用户通过手指滑动能达到的真正最顶端的位置。 我不想使用ScrollView或其他东西。我其实需要的是List。 struct StackScrollToTopExample: View { private struct ExampleItem: Identifiable { let id = UUID() let title: String } privat
如何在SwiftUI的 TabView中更改当前选中的标签页背景颜色?
我想像下方那样添加背景颜色: 我尝试通过添加 ZStack 来实现,但未成功,得到的显示如下: TabView(selection: $coordinator.selectedTab) { // Chat Tab NavigationStack(path: coordinator.pathBinding(for: .chat)) { coordinator.buildRootView(tab: .chat) .toolbarVisibility(.hidden, for: .navigationBar)
是否仅在SwiftUI的透明按钮外侧应用阴影?
我有一个SwiftUI按钮,背景透明、圆角边框,并带有阴影。 问题在于按钮是透明的,因此阴影会在圆角矩形的外部和内部都可见。我希望阴影只出现在按钮外部,不渗入透明的内部。 下面是一个最小的示例: import SwiftUI #Preview("StackOverflow Transparent Button Shadow") { let cornerRadius: CGFloat = 15 Button {} label: { Text("Transparent button") .font(.syst
在尝试将带参数的 @ViewBuilder闭包的参数设为可选时,如何消除“无法在推断时使用默认表达式”的警告?
我在应用中有一个常见模式,在其中我在一个泛型Struct中定义一个@ViewBuilder闭包,以使它可选地被使用: struct MenuList: View { private var additionalRowActions: (T, Binding) -> AdditionalRowActions init(@ViewBuilder additionalRowActions: @escaping
SwiftUI的 Date.FormatStyle在备用日历下不起作用
我正在尝试让SwiftUI使用 Date.FormatStyle 在两种日历中格式化日期,但一直没能成功。我到底哪里出错了?下面给出一个最小的示例: import SwiftUI struct ContentView: View { let date = Date() var islamicStyle: Date.FormatStyle { var style = Date.FormatStyle(date: .numeric, time: .omitted) style.calendar = Calen
在SwiftUI中,为整屏设置背景颜色的最佳实践是什么?
我需要给全屏设置背景颜色或背景图片,于是尝试了两种方式,两者都工作得很完美,但我想知道在SwiftUI中哪种方法是最佳的,或者是否还有其他给屏幕设置背景颜色的方法? struct ContentView: View { var body: some View { ZStack { Image("bg") .resizable() .scaledToFill() .ignoresSafeArea() VStack(spacing: 10) { Image(systemName: "globe") .imag