导航栏的iOS 11问题更喜欢大标题

22 uinavigationbar ios swift uisearchcontroller ios11

Xcode 9 beta 6 iOS 11

我有一个故事板viewController,背景ImageView,tableView和searchFooter 视图视图的子视图.结构如下:

在此输入图像描述

AppDelegate课堂上,我设定了
UINavigationBar.appearance().prefersLargeTitles = true

UINavigationBar.appearance().setBackgroundImage(UIImage(),for: .default)

UINavigationBar.appearance().shadowImage = UIImage()
Run Code Online (Sandbox Code Playgroud)

viewController课堂上,我设置 navigationItem.searchController = searchControllernavigationItem.hidesSearchBarWhenScrolling = true

当我运行应用程序,我发现shadowImagenavigationBar是仍然存在.当我滚动tableView时,navigationBar不会自动(不是prefersLargeTitles模式)自动(左边的gif).我希望navigationBar可以像系统应用程序(右边的gif)一样工作.

我的应用系统应用

一个奇怪的行为:当我删除背景时imageView,它可以像模拟器上的系统应用程序一样工作.

我不知道为什么会这样,我想知道如何解决它?谢谢.

小智 -1

您应该在 viewDidLoad() 中添加以下行

self.navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.hidesSearchBarWhenScrolling = false
Run Code Online (Sandbox Code Playgroud)

或者您可以实施viewForHeaderInSection以下方法UITableViewDataSource

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 
    {
            let search = UISearchController(searchResultsController: nil)
            search.searchResultsUpdater = self
            return search.searchBar
    }
Run Code Online (Sandbox Code Playgroud)

查看屏幕截图的链接 1 查看屏幕截图的链接 2