导航控制器工具栏大小和位置 - iOS Swift

Posted

技术标签:

【中文标题】导航控制器工具栏大小和位置 - iOS Swift【英文标题】:Navigation Controller Toolbar Size & Location - iOS Swift 【发布时间】:2016-11-22 01:25:55 【问题描述】:

您好,我目前正在使用 Swift 3 开发一个应用程序。我在嵌入导航控制器的表格视图控制器中遇到问题。我目前正在显示 navigationController 工具栏。但是在初始表视图控制器上,我将导航栏设置为隐藏。这会导致工具栏被调整大小并重新定位。

有谁知道我如何重新加载工具栏以遵循以下代码行:(在视图中会出现此调用)

self.navigationController?.toolbar.frame = CGRect(x: 0, y: UIScreen.main.bounds.height-80, width: self.view.frame.size.width, height: 80)

使用以下方法隐藏导航栏后,我无法找到如何调整工具栏的大小:(这在视图中确实出现了)

self.navigationController?.setNavigationBarHidden(true, animated: true)

【问题讨论】:

嗨,Jerland,您尝试以下答案了吗? @aircraft 是的!谢谢你,它就像一个魅力,我从来没有想过操纵故事板工具栏,我试图以编程方式完成这一切。非常感谢 【参考方案1】:

您无法直接调整 toolbar 的大小:

但是你可以在你的项目中继承UIToolbar

import UIKit

class CustomToolbar: UIToolbar 

override func sizeThatFits(_ size: CGSize) -> CGSize 

    var newSize: CGSize = super.sizeThatFits(size)
    newSize.height = 80  // there to set your toolbar height 

    return newSize
    


storyboard

结果,工具栏高度为80:

【讨论】:

@Jerland2 首先要知道NavigationController 中的UIToolbar是只读的,可以在程序中验证,customToolbarreplicate functionality like the Apple Music now playing toolbar的最佳选择 抱歉删除了评论,我一开始误解了你的故事板,已经解决了,谢谢! 这似乎不适用于 swift 4。有人有解决方法吗?专门针对 NavigationController 的工具栏,就像在这个问题中一样。谢谢。【参考方案2】:

请注意,根据this 的帖子,此解决方案不再适用于 ios 11 / swift 4。我正在积极寻找解决方法。

【讨论】:

以上是关于导航控制器工具栏大小和位置 - iOS Swift的主要内容,如果未能解决你的问题,请参考以下文章

Swift iOS以编程方式在导航栏下方设置scrollView约束

不在导航栏上制作栏按钮项目和标题(iOS,Swift)

在 iOS8 中调整旋转工具栏的大小

在 Swift 中调整导航栏项的位置

swift ios 中的视图控制器中的按钮操作和导航不起作用

如何使用 Swift 以编程方式跨越 iOS 导航控制器?