-
-
Save nazywamsiepawel/0166e8a71d74e96c7898 to your computer and use it in GitHub Desktop.
my subtitle is shifted to the left ...
I did some modifications in case of the title or sub be too large and if there is some item on the right side of the navigation bar.
static func setTitle(title:String, subtitle:String, view: UIView) -> UIView {
let titleLabel = UILabel(frame: CGRect(x:0, y:-5, width: view.frame.width - 100, height: 20))
titleLabel.backgroundColor = UIColor.clear
titleLabel.textColor = UIColor.black
titleLabel.font = UIFont.boldSystemFont(ofSize: 17)
titleLabel.text = title
titleLabel.adjustsFontSizeToFitWidth = false
titleLabel.lineBreakMode = .byTruncatingTail
titleLabel.textAlignment = .center
let subtitleLabel = UILabel(frame: CGRect(x:0, y:18, width: view.frame.width - 100, height: 10))
subtitleLabel.backgroundColor = UIColor.clear
subtitleLabel.textColor = UIColor.gray
subtitleLabel.font = UIFont.systemFont(ofSize: 11)
subtitleLabel.text = subtitle
subtitleLabel.adjustsFontSizeToFitWidth = false
subtitleLabel.lineBreakMode = .byTruncatingTail
subtitleLabel.textAlignment = .center
let titleView = UIView(frame: CGRect(x:0, y:0, width: view.frame.width - 30, height:30))
titleView.addSubview(titleLabel)
titleView.addSubview(subtitleLabel)
return titleView
}
thx, it solved my issue
Hello, sorry, I'm beginner for swift, I practice this example using your code and have a question.
The two label are overlapping.
I use in navigationcontroller embed tabbarcontroller
what do I miss to think?
Thanks.
switch selectedIndex {
case 0:
self.navigationItem.titleView = setTitle(title: "title123456789", subtitle: "subtitle123456789")
break
case 1:
self.navigationItem.titleView = setTitle(title: "title20987654321", subtitle: "subtitle2")
break
default:
break
}
https://drive.google.com/open?id=0B_IjPmM4mwbRTEFCd3JIbDZBTTA
https://drive.google.com/open?id=0B_IjPmM4mwbRWXFJNjJmaVdIS0E
Thanks
Thank you for writing this. It really helped me.
This works great! One question is how can this go under the left bar button instead of beside it?
I joined @odonckers and @blinkelvin code together
func setTitle(title: String, titleColor: UIColor, titleSize: Int, subtitle: String, subtitleColor: UIColor, subtitleSize: Int , view: UIView) -> UIView {
let titleLabel = UILabel(frame: CGRect(x:0, y:-5, width: view.frame.width - 100, height: 20))
titleLabel.backgroundColor = UIColor.clear
titleLabel.textColor = titleColor
titleLabel.adjustsFontSizeToFitWidth = false
titleLabel.font = UIFont.boldSystemFont(ofSize: CGFloat(titleSize))
titleLabel.lineBreakMode = .byTruncatingTail
titleLabel.textAlignment = .center
titleLabel.text = title
let subtitleLabel = UILabel(frame: CGRect(x:0, y:18, width: view.frame.width - 100, height: 10))
subtitleLabel.backgroundColor = UIColor.clear
subtitleLabel.textColor = subtitleColor
subtitleLabel.adjustsFontSizeToFitWidth = false
subtitleLabel.lineBreakMode = .byTruncatingTail
subtitleLabel.textAlignment = .center
subtitleLabel.font = UIFont.systemFont(ofSize: CGFloat(subtitleSize))
subtitleLabel.text = subtitle
let titleView = UIView(frame: CGRect(x:0, y:0, width: view.frame.width - 30, height:30))
titleView.addSubview(titleLabel)
titleView.addSubview(subtitleLabel)
return titleView
}
here is an example of how to use it
self.navigationItem.titleView = setTitle(title: "TITLE", titleColor: UIColor.black, titleSize: 16, subtitle: "SUBTITle", subtitleColor: UIColor.gray, subtitleSize: 12, view: self.view)
I notice it looks very good with Regular NavigationBar
but with Large NavigationBar it stays on the same size
it needs to improve with Large Navigation bar
On line 32 should be
subtitleLabel
nottitleLabel