我正在使用一个按钮作为我的标题视图,UITableViewController
它会打开一个类别的下拉列表。选择类别会按所选类别过滤表格视图的内容。
该按钮显示所选类别的名称加上一个小箭头,类似于 iBooks 过去的外观(或者可能仍然看起来?我有一段时间没有使用它了)。因此,我希望它具有与标准标题相同的行为,并且一开始它会很大,并在滚动表格视图时折叠。
有没有办法做到这一点?
谢谢
我正在使用一个按钮作为我的标题视图,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。
我希望苹果能尽快解决这个问题!
好吧,我有同样的问题。我在 UINavigationItem.titleView 中有 UIButtons,它们根本没有对触摸做出反应。问题在于,由于自动布局,这些按钮的大小为 (0,0) 的视图。因此,要解决此问题,您需要在自定义视图中添加额外的视图,我们将其称为“contentView”并将所有控件放入该 contentView 中。此外,contentView 必须具有定义的大小和约束。快速测试是给 contentView 添加宽度和高度约束。一切都重新开始了。
希望这可以帮助某人。