我想使用新的. searchable修饰符和. navigationBarDrawer(显示模式:. always).但如果我启动App,搜索栏的默认位置已经"滚动"了。
但这正是我在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))
}
}
}
2条答案
按热度按时间jdgnovmf1#
Hacky解决方案,但它的工作:
}
jtw3ybtb2#
如果您可以使用依赖项,下面是使用SwiftUI-Introspect的解决方案
基本上,我从这里找到了最初的UIKit答案,并发现要求navigationController调用
sizeToFit()
解决了这个问题(在我的测试中)。在documentation中,sizeToFit告诉导航栏根据自己的需要调整大小,即拥有一个大标题。我相信这是iOS 15中的SwiftUI错误,现在在iOS 16+中得到了修复,因为在使用可搜索的
.navigationBarDrawer(displayMode: .always)
时不再发生这种行为。