ios - library - uikit是什麼




iOS 11大標題導航欄沒有崩潰 (4)

Cocoa Touch WWDC視頻中的新功能中的蘋果公司表示 ,新的大標題導航欄將神奇地掛鉤到底層視圖控制器的頂級滾動視圖,並在向上和向下滾動時自動折疊/展開。 (並且通過“神奇地”,他可能意味著他們未能將這個功能修補到已經令人尷尬的UINavigationController - UINavigationBar - UINavigationitem API中,這是一種可用的方式,所以他們不得不訴諸於幕後的一些啟發式選擇的滾動視圖)

即使我準備好這種“自動”崩潰/擴展如果我從基本的UINavigationController + UITableView / UICollectionView設置中UICollectionView ,但似乎即使在這個最簡單的情況下它也不能按預期工作。

這就是我所擁有的:

一個UITabBarController ,它包含一個UINavigationController ,它包含一個UIViewController ,它有一個UITableView作為它的view 。 點擊表格中的第一個單元格將推送導航堆棧上的第二個視圖控制器:

沒有代碼,只有故事板。

我已經檢查了導航欄中的“首選大標題”以激活大型標題。 現在,如果我運行應用程序並在表格視圖上向上/向下滾動,導航欄保持不變 - 大尺寸; 它沒有崩潰:

但是,我發現如果我將第二個視圖控制器的導航項設置為使用小導航欄(通過將“大標題”設置為值“從不” ),那麼如果我打開該頁面並導航回來,則交互式崩潰神奇地開始在第一頁上工作:

我在這裡遺漏了什麼,或者這個功能不能正常工作? 這是我正在使用的示例項目: https://github.com/tzahola/iOS-11-Large-Title-Navigation-Barhttps://github.com/tzahola/iOS-11-Large-Title-Navigation-Bar

順便說一下,我正在使用官方發布的iOS 11,而不是beta。

2017-09-23更新:我已經向Apple發送了一個錯誤報告,並在openradar.me上開了一張票: http://www.openradar.me/radar?id=5017601935671296http://www.openradar.me/radar?id=5017601935671296 5017601935671296


@TamasZahola @ mohamede1945

伙計們我遇到了同樣的問題。 我能夠通過在我的第一個導航控制器視圖控制器上添加以下代碼段來解決此問題

navigationController?.navigationBar.prefersLargeTitles = true

好消息! 我剛想通瞭如果我在故事板上將“大標題”設置為“從不” ,然後通過代碼設置它,那麼它可以工作:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAutomatic;
}

似乎Apple在導航項目通過Interface Builder設置了largeTitleDisplayMode時忘記處理這種情況。

因此,在他們解決此問題之前,請在故事板上將“大型標題”保留為“從不” ,並通過viewDidLoad代碼進行設置。

您只需要對第一個視圖控制器執行此操作。 後續視圖控制器遵循故事板中的值。


或者不改變故事板中的任何內容,請執行以下操作:

override func viewDidLoad() {
    super.viewDidLoad()
    if #available(iOS 11.0, *) {
        self.navigationItem.largeTitleDisplayMode = .never
        self.navigationItem.largeTitleDisplayMode = .always
    }
}

不管是哪種語言!

這是因為導航項上的大標題基於先前屏幕導航項標題上的大標題行為來決定是否折疊。


由於我不能發表評論,我將在此分享我發布的答案

.com/a/47493375/8385022

我基本上在這個站點找到了一個解決方法,如果tableView(或者有滾動的元素)不是視圖層次結構中的第一個視圖,則大標題無法自動隱藏。

不起作用的 示例將起作用的示例

https://markusbodner.com/2017/10/08/fix-large-navigation-bar-title-not-hiding-on-scroll-in-ios-11/

我在視圖上添加了willAppear:

        if #available(iOS 11.0, *) {
        navigationController?.navigationBar.prefersLargeTitles = true
    } else {
        // Fallback on earlier versions
    }






ios11