簡體   English   中英

自定義標題視圖作為iOS 11新導航欄中的大標題

[英]Custom title view as large title in iOS 11 new navigation bar

我使用一個按鈕作為我的UITableViewController的標題視圖,它打開一個下拉列表的類別。 選擇類別會按所選類別過濾表格視圖的內容。

按鈕顯示所選類別的名稱加上一個小箭頭,類似於iBooks的外觀(或者看起來仍然看起來?我暫時沒有使用它)。 因此,我希望它具有與標准標題相同的行為,並且首先使其變大並在滾動表視圖時折疊。

有沒有辦法做到這一點?

謝謝

看來由於新的大型游戲,IOS11需要在navigationItem.titleView中設置自定義視圖的約束。

這樣做是為了:

customView.widthAnchor.constraint(equalToConstant: 200).isActive = true
customView.heightAnchor.constraint(equalToConstant: 44).isActive = true

self.navigationItem.titleView = customView

請注意,必須同時對寬度和高度進行此操作。

它應該工作。 無需添加按鈕,至少在我的情況下......

這是Apple建議的,以確保您沒有零大小的自定義視圖。 請參閱https://developer.apple.com/videos/play/wwdc2017/204/中的幻燈片33

看起來像navigationItem.titleView的觸摸被打破了。 手勢,點擊事件和按鈕 - 沒有任何作用

看起來像iOS 11中的錯誤: https//forums.developer.apple.com/thread/82466

我暫時實現了這個解決方法:

    private lazy var navBarActionButtonIOS11: UIButton = {
        button.addTarget(self.navTitleView, action: #selector(self.navTitleView.didTapView), for: .touchUpInside)
        return button
    }()

[...]

        navigationItem.titleView = navTitleView
        if #available(iOS 11.0, *), let navBar = navigationController?.navigationBar {
            navBarActionButtonIOS11.removeFromSuperview()
            navBar.addSubview(navBarActionButtonIOS11)
            navBarActionButtonIOS11.center.x = navBar.center.x
        }

另一種解決方案可能是直接將UIButton分配給navigationItem.titleView。

我希望Apple盡快解決這個問題!

好吧,我有同樣的問題。 我在UINavigationItem.titleView中有UIButtons,而那些根本沒有對觸摸作出反應。 問題是由於自動布局,這些按鈕在哪里的大小(0,0)。 因此,要解決此問題,您需要在自定義視圖中添加其他視圖,我們將其稱為“contentView”並將所有控件放在該contentView中。 此外,contentView必須具有約束的已定義大小。 快速測試是為contentView添加寬度和高度約束。 一切都有效。

希望這有助於某人。

暫無
暫無

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

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