UINavigationController 底部工具栏在 hideBarsOnTap 之后不保留其状态
Posted
技术标签:
【中文标题】UINavigationController 底部工具栏在 hideBarsOnTap 之后不保留其状态【英文标题】:UINavigationController bottom toolbar does not preserve its state after hideBarsOnTap 【发布时间】:2015-11-02 14:14:14 【问题描述】:我有一个 UINavigationController,它有一个底部工具栏,我以编程方式设置它的高度,如下所示:
navigationController?.toolbar.frame.size.height += 43.0
navigationController?.toolbar.frame.origin.y -= 43.0
navigationController?.hidesBarsOnTap = true
当我点击我的视图以隐藏栏并再次点击以显示它们时,底部栏返回其默认状态:
栏再次显示后如何保持高度?
非常感谢! :)
【问题讨论】:
有趣的问题,关注。 【参考方案1】:没有一个很好的方法来做到这一点,但你可以做一些事情,比如在 self.view 上放置一个 tapGestureRecognizer 并计算点击次数。
类似
var numTaps = 0
@IBAction func tapOnView(sender: UITapGestureRecognizer)
self.numTaps++
if numTaps%2==0
self.navigationController?.toolbar.frame.size.height += 43.0
self.navigationController?.toolbar.frame.origin.y -= 43.0
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer,
shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool
return true
这有点骇人听闻,但可能会起作用,可能会稍微延迟一下,以确保您在设置工具栏位置后设置高度。
或尝试Is there a way to change the height of a UIToolbar? 提供的答案之一和子类 uitoolbar 以覆盖 sizeThatFits
【讨论】:
这实际上是一个不错的选择.. 但我尽量不做太多“hacky”技巧。如果我只创建自己的工具栏而不考虑 UINavigationController 中的工具栏并响应隐藏导航栏的点击,那不是更好吗? 你比我更了解你的用例。你是在问使用 UINavigationController 的工具栏有什么便利?跨多个 uiviewcontrollers 的相同工具栏,与自动布局、点击隐藏等便利功能以及统一的设计/用户体验(但你似乎不喜欢这个设计,因为你想让它更高)配合得很好。所以要权衡取舍。以上是关于UINavigationController 底部工具栏在 hideBarsOnTap 之后不保留其状态的主要内容,如果未能解决你的问题,请参考以下文章
UINavigationController 底部工具栏在 hideBarsOnTap 之后不保留其状态
UINavigationController 旋转时在底部留下 12px 的间隙
将 UIView 添加到 UICollectionViewController 的底部
是否可以在没有UINavigationController的情况下将UIToolbar放在UICollectionView下面?