所以我想在导航控制器的导航栏中添加标题下的“副标题”.
到目前为止,我查找的大部分内容都要我使用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 }
self.navigationItem.titleView = setTitle("Title",subtitle: "SubTitle")
只有已知的问题是,如果字幕变得非常大,则发生错位.
最终结果@H_502_34@
资料来源:https://gist.github.com/nazywamsiepawel/0166e8a71d74e96c7898