繁体   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