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/)のスライド33を参照してください。 wwdc2017/204 /
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にUIButtonがあり、それらはタッチにまったく反応しませんでした。問題は、自動レイアウトのために、これらのボタンがサイズ(0,0)のビューにあることです。したがって、この問題を修正するには、カスタムビューにビューを追加する必要があります。これを「contentView」と呼び、すべてのコントロールをそのcontentView内に配置します。また、contentViewには、制約付きの定義済みサイズが必要です。簡単なテストは、contentViewに幅と高さの制約を追加することです。そして、すべてが再び機能します。
これが誰かを助けることを願っています。