我正在测试SwiftUI的特性.searchable()。但似乎搜索栏上面总是有一个空间。由于可搜索项是嵌入在导航栏中的,所以我将空间理解为导航栏项的位置。但是有没有办法删除这个空间,让搜索栏看起来像Instagram上的那样?我已经尝试将导航栏样式更改为内联,如下面的代码,但上面仍然有一些空间。搜索栏的位置有什么逻辑吗?
NavigationView{
SearchView(searchText: $searchText)
.navigationBarTitleDisplayMode(.inline)
}
.searchable(text: $searchText, placement: .navigationBarDrawer(displayMode: .always), suggestions: {
ForEach(searchResults, id: \.self){result in
Text(result).searchCompletion(result)
}
})
1条答案
按热度按时间kgsdhlau1#
我刚找到一种方法把它取出来。删除搜索栏上方空间的方法是避免使用内置的.searchable修饰符,而是通过创建UIViewRepresentable SwiftUI视图来使用UIKit的UISearchBar。这使您可以完全控制搜索栏的外观和行为。下面是一个如何执行此操作的示例:
首先,创建SearchBar结构:
然后,您可以在SwiftUI视图中使用SearchBar,如下所示:
这将在SwiftUI视图的顶部给予一个搜索栏。