gpt4 book ai didi

uinavigationbar - iOS 11 导航栏中的搜索栏

转载 作者:行者123 更新时间:2023-12-03 05:27:49 24 4
gpt4 key购买 nike

在 iOS 11 中,Apple 重新设计了 UISearchBar,使角更圆,高度更大。将 UISearchBar 添加到 navigationBar 非常简单,只需使用 navigationItem.titleView = searchBar 将其设置为 navigationItem 的 titleView 即可。

但是,在 iOS 11 中,它似乎不再按预期工作。看一下我们使用 iOS 10 和 iOS 11 比较相同设置的屏幕

iOS 10 enter image description here

iOS 11 enter image description here

您可以清楚地看到搜索栏增加了导航栏的大小,但栏按钮没有正确对齐。此外,搜索栏不再使用左侧的可用空间。

将搜索栏放入包装 View 中以获取 iPad 上的取消按钮,如此处所述 Cancel button is not shown in UISearchBar似乎也不再工作了,因为搜索栏根本不可见。

如果有人有类似的问题或已经知道如何解决/改进这个问题,我将非常感激。

这是使用 Xcode 9 Beta 4 构建的。也许 future 的版本会解决这个问题。

更新:

由于这个问题没有得到解决,我们决定使用以下解决方案。我们向 NavBar 添加了一个新的 UIBarButtonItem,然后它呈现了一个新的 ViewController,其中我们只将 searchBar 放入 NavBar 中,而没有其他任何内容到 NavBar 中,这似乎可以工作。使用选定的答案可能是最好的解决方案,因为 iOS 11 的 Apple 希望我们使用这种新设计,即使它没有给我们最初想要的结果。另一种可能解决此问题的方法可能是自定义 SearchBar,但这是另一个主题。

最佳答案

iOS 11 中的 navigationItem 有一个新的 searchController 属性。

https://developer.apple.com/documentation/uikit/uinavigationitem/2897305-searchcontroller

像这样使用...

if #available(iOS 11.0, *) {
navigationItem.searchController = searchController
} else {
// Fallback on earlier versions
navigationItem.titleView = searchController?.searchBar
}

在 Objective-C 中,if 语句如下所示:

if (@available(iOS 11.0, *)) {

在 iOS 11 上,如果您未设置 navigationItem.hidesSearchBarWhenScrolling = false,搜索栏最初可能会隐藏,除非用户向下滚动以显示它。如果您将其设置为 false,它会显示在标题所在位置的下方,而无需用户滚动。

关于uinavigationbar - iOS 11 导航栏中的搜索栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45350035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com