iOS 15 中的 SwiftUI .searchable - .navigationBarDrawer(displayMode: .always)
Posted
技术标签:
【中文标题】iOS 15 中的 SwiftUI .searchable - .navigationBarDrawer(displayMode: .always)【英文标题】:SwiftUI .searchable in iOS 15 - .navigationBarDrawer(displayMode: .always) 【发布时间】:2021-06-27 16:30:37 【问题描述】:我想使用新的 .searchable 修饰符和 .navigationBarDrawer(displayMode: .always) 来实现搜索栏。但是如果我启动应用程序,搜索栏的默认位置已经“滚动”了。
但这是我在App启动时想要实现的:
这是我的代码:
struct SearchView: View
@State var searchText = ""
var body: some View
NavigationView
List
Text("Search Bar")
.navigationBarTitle("Search")
.searchable(text: $searchText, placement: .navigationBarDrawer(displayMode: .always))
【问题讨论】:
【参考方案1】:Hacky 解决方案,但它有效:
struct ContentView: View
@State var searchText = ""
var body: some View
NavigationView
ZStack
Rectangle()
.fill(Color.white)
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: 1)
List
Text("Search Bar")
.searchable(text: $searchText, placement:.navigationBarDrawer(displayMode: .always))
.navigationBarTitle("Search", displayMode: .large)
【讨论】:
感谢您的回答!不幸的是,导航栏标题在滚动时不再变为内联。 @XÆA-12 您现在可以查看我已经更新了答案。最初,我以为你一直想要一个大标题。 很好,完美运行。虽然它有点 hacky :) 你知道这是苹果故意还是只是一个错误? 它只有在你添加 searchable(text: 到它时才会发生。所以它故意在那里是有原因的,但不知道它是什么。:)以上是关于iOS 15 中的 SwiftUI .searchable - .navigationBarDrawer(displayMode: .always)的主要内容,如果未能解决你的问题,请参考以下文章
Objective-C依然占C位,Swift和SwiftUI在iOS 15中的使用情况
SwiftUI 和 iOS 15 中的新功能:LocationButton