热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

NavigationBar中的iOS11SearchBar

如何解决《NavigationBar中的iOS11SearchBar》经验,为你挑选了2个好方法。

在iOS 11中,Apple通过使角落更圆,高度更大来重新设计UISearchBar.只需将它设置为navigationItem的titleView,就可以将UISearchBar添加到navigationBar非常简单navigationItem.titleView = searchBar.

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

iOS 10 在此输入图像描述

iOS 11 在此输入图像描述

您可以清楚地看到SearchBar增加了NavigationBar的大小,但条形按钮没有正确对齐.此外,searchBar不再使用左侧的可用空间.

将searchBar放入包装器视图以获取iPad上的取消按钮,如此处所述取消按钮未显示在UISearchBar中似乎不再起作用,因为searchBar根本不可见.

如果有人有类似的问题或已经知道如何解决/改善这一点,我将非常感激.

这是使用Xcode 9 Beta 4构建的.也许将来的版本将解决这个问题.

更新:

由于这没有得到修复,我们决定使用以下解决方案.我们向NavBar添加了一个新的UIBarButtonItem,然后它呈现了一个新的ViewController,我们只将一个searchBar放入NavBar,而这似乎没有用.使用所选答案可能是最佳解决方案,因为Apple 11和iOS 11希望我们使用这种新设计,即使它没有给我们原先想要的结果.另一种可能解决此问题的方法可能是自定义SearchBar,但这是另一个主题.



1> Justin Domni..:

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,则它会显示在标题所在的下方,而无需用户滚动.


这不会给出原始描述的结果.使用searchController属性会将搜索栏放在导航下方.

2> zgjie..:

您可以通过添加高度为44的约束来更改iOS 11中UISearchBar的高度:

if #available(iOS 11.0, *) {
    searchBar.heightAnchor.constraint(equalToConstant: 44.0).isActive = true
}


推荐阅读
author-avatar
yolo_bean
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有