当前位置: 首页 > 面试题库 >

在Xcode的导航栏控制器中的标题下添加字幕

呼延烈
2023-03-14
问题内容

因此,我想在导航控制器的导航栏中的标题下方添加一个“字幕”。

到目前为止,我查找的大部分内容都希望我使用CGRect。我不太清楚这是什么,这听起来像是要我创建一个全新的视图,而这并不是我想要的。

我的问题是,是否可以使用点方法轻松添加字幕视图?

显然去年这可行,但是现在我遇到了错误,它在我的viewDidLoad中…

我尝试了这个:

self.navigationController?.navigationItem.prompt =“这里有字幕”

这是唯一不会显示任何错误但仍然无法正常工作的东西。它实际上什么也没做。在运行时至少看不到任何东西。

顺便说一句,迅速是首选。谢谢!


问题答案:

虽然有解决方案,但存在一些已知问题

解决方案是编写这样的函数

func setTitle(title:String, subtitle:String) -> UIView {
    let titleLabel = UILabel(frame: CGRectMake(0, -2, 0, 0))

    titleLabel.backgroundColor = UIColor.clearColor()
    titleLabel.textColor = UIColor.grayColor()
    titleLabel.font = UIFont.boldSystemFontOfSize(17)
    titleLabel.text = title
    titleLabel.sizeToFit()

    let subtitleLabel = UILabel(frame: CGRectMake(0, 18, 0, 0))
    subtitleLabel.backgroundColor = UIColor.clearColor()
    subtitleLabel.textColor = UIColor.blackColor()
    subtitleLabel.font = UIFont.systemFontOfSize(12)
    subtitleLabel.text = subtitle
    subtitleLabel.sizeToFit()

    let titleView = UIView(frame: CGRectMake(0, 0, max(titleLabel.frame.size.width, subtitleLabel.frame.size.width), 30))
    titleView.addSubview(titleLabel)
    titleView.addSubview(subtitleLabel)

    let widthDiff = subtitleLabel.frame.size.width - titleLabel.frame.size.width

    if widthDiff < 0 {
        let newX = widthDiff / 2
        subtitleLabel.frame.origin.x = abs(newX)
    } else {
        let newX = widthDiff / 2
        titleLabel.frame.origin.x = newX
    }

    return titleView
}

使用此功能自定义导航标题视图 viewDidLoad

self.navigationItem.titleView = setTitle("Title", subtitle: "SubTitle")

唯一已知的问题是,如果字幕变得很大而不是放错位置,就会发生字幕。

最终结果
在此处输入图片说明

资料来源:https :
//gist.github.com/nazywamsiepawel/0166e8a71d74e96c7898



 类似资料:
  • 问题内容: 我一直在尝试以下操作,以使导航栏的标题保持对齐: 在文件中: 在文件中: 但我找不到解决问题的方法。我还尝试了以下在此处未显示任何内容的内容: 在文件中: 在文件中: 问题答案: 您可以使用navigationItems titleView添加具有左对齐的UILabel,然后使用自动布局设置其框架,如下所示:

  • 请参见黑色导航栏和分组的表格视图垂直细条纹之间的空白?该空间是导航栏的一部分。如果我滚动表格视图,空格将保持在原来的位置。 我需要navigationController框架仅在这个viewController中更短,这样就没有提供的屏幕截图中显示的空白。 (可能与此有关的是一个带有分组tableview的viewController)。。 以下是此视图控制器的唯一其他子视图: 此导航栏在应用程序

  • 问题内容: 我正在尝试在导航栏中设置标题标签以允许多行。我有将多行代码放入其中的自定义导航控制器代码。我知道该代码已经可以使用,但是我的多行部分无法使用。 但是文本仍然在结尾处消失。我还尝试将其放入单个视图控制器本身,并在其前面添加相同的结果。 我的代码中缺少某些东西可以防止标题标签使用多行吗? 问题答案: 这是如何创建多行navigationBar标题的代码示例 Swift 5.x:

  • 我有一个导航视图控制器,它会在操作时向选项卡栏视图控制器发送一个序列。因此,选项卡式视图控制器继承了导航栏。我正在尝试将标题应用于连接到选项卡栏视图控制器的其中一个视图控制器,但通过代码设置标题对我不起作用。有人知道为什么会这样吗? 这是我的故事板的图片: 带有注销按钮的视图控制器是我试图在导航条(代码)中设置标题的地方: 导航控制器中嵌入的视图控制器触发到选项卡栏控制器的顺序:

  • 我正在编写一个具有多个视图的iOS应用程序。我已经将应用程序设置为使用基于ViewController的状态栏样式,这允许我使用以下代码 这就像预期的那样。 然后我将视图嵌入到导航控制器中,并将Barbuttonite与showSegue连接起来。此后,视图的ViewController切换为忽略样式设置,并显示默认的黑色状态栏。

  • [更新] 我通过添加addHeaderView解决了这个问题: ================================ 我的问题就是这么简单! 我想知道如何在导航抽屉中添加标题? 我已经为每个项目创建了带有列表视图(图标文本)的导航抽屉。 非常感谢,