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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (78)

所以我想在导航控制器的导航栏中的标题下添加一个“副标题”。

到目前为止,我所查找的大部分内容都希望我使用CGRect。我不知道那是什么,听起来我想要我创造一个全新的观点,这不是我想要做的。

我的问题是,是否有一个点方法来添加一个字幕视图容易?

现在我的观点中出现了错误,DidLoad.

我试过这个:

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")

只有已知的问题是,如果字幕变得非常大,超过错位发生。

最终结果

用户回答回答于

如果有人在字幕文本长于标题文本时出现标题不对齐的问题,我在上面的Rajan的回答中添加了以下代码,下面就是子标题Label的实例化部分:

// Fix incorrect width bug
if (subtitleLabel.frame.size.width > titleLabel.frame.size.width) {
    var titleFrame = titleLabel.frame
    titleFrame.size.width = subtitleLabel.frame.size.width
    titleLabel.frame = titleFrame
    titleLabel.textAlignment = .center
}

希望这能帮助那些和我遇到同样问题的人

所属标签

可能回答问题的人

  • 西风

    renzha.net · 站长 (已认证)

    7 粉丝1 提问12 回答
  • 四无君

    0 粉丝0 提问3 回答
  • HKC

    红客学院 · 创始人 (已认证)

    26 粉丝7 提问2 回答
  • o o

    3 粉丝490 提问2 回答

扫码关注云+社区

领取腾讯云代金券