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

前端之家收集整理的这篇文章主要介绍了swift – 在Xcode的导航栏控制器的标题下添加字幕前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我想在导航控制器的导航栏中添加标题下的“副标题”.

到目前为止,我查找的大部分内容都要我使用CGRect.我不知道那是什么,听起来它想要我创建一个全新的视图,这不是我想要做的.

我的问题是,有一种点方法可以轻松添加字幕视图吗?

我找到的最接近的东西是在堆栈溢出时发布,这里是链接

Create a subtitle in navigationbar

显然去年这有效,但现在我得到错误,它在我的viewDidLoad …

我试过这个:

self.navigationController?.navigationItem.prompt =“Subtitle Here”

这是唯一不会显示任何错误但仍然无法正常工作的东西.它几乎什么都不做.至少在运行时没有任何可见的东西.

另一方面,swift是首选.谢谢!

虽然有一个解决方案,但它有一些已知的问题

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

func setTitle(title:String,subtitle:String) -> UIView {
    let titleLabel = UILabel(frame: CGRectMake(0,-2,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))
    subtitleLabel.backgroundColor = UIColor.clearColor()
    subtitleLabel.textColor = UIColor.blackColor()
    subtitleLabel.font = UIFont.systemFontOfSize(12)
    subtitleLabel.text = subtitle
    subtitleLabel.sizeToFit()

    let titleView = UIView(frame: CGRectMake(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")

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

最终结果@H_502_34@

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

猜你在找的Swift相关文章