簡體   English   中英

導航欄的iOS 11問題更喜歡大標題

[英]iOS 11 issues with navigationBar prefersLargeTitles

Xcode 9 beta 6 iOS 11

我有一個viewController的故事板, 背景ImageViewtableView和searchFooter 視圖視圖的子視圖 。結構如下:

在此輸入圖像描述

AppDelegate類中,我設置了
UINavigationBar.appearance().prefersLargeTitles = true

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

UINavigationBar.appearance().shadowImage = UIImage()

viewController類中,我設置了navigationItem.searchController = searchControllernavigationItem.hidesSearchBarWhenScrolling = true

當我運行應用程序時,我發現navigationBarshadowImage仍然存在。 當我滾動tableView時,navigationBar不會自動(不是prefersLargeTitles模式)成為正常(左邊的gif)。我希望navigationBar可以像系統應用程序(右邊的gif)一樣工作。

我的應用 系統應用

一個奇怪的行為:當我刪除背景imageView ,它可以像模擬器上的系統應用程序一樣工作。

我不知道為什么會這樣,我想知道如何解決它? 謝謝。

我為你的問題做了一個小應用程序。 您可以在Github上訪問該項目。

適用於iOS11的透明NavigationBar

注意:向上滾動時必須使用UINavigationBar的顏色。

該帳戶已被Stack overflow團隊刪除。 所以我在這里用另一個ID來評論。 我向Apple報告了這個問題,他們讓我提供了一個項目而且我做了,但Apple沒有再發表任何評論了。

在NavigationController的NavigationsBar下創建TableView Top約束,而不是ViewControllers Top。 它應該工作

你應該在viewDidLoad()中添加以下行

self.navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.hidesSearchBarWhenScrolling = false

或者您可以實現UITableViewDataSource viewForHeaderInSection方法

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

鏈接查看截圖1 鏈接查看截圖2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM