多行导航栏标题
问题描述:
我想在我的导航栏中设置标题标签以允许多行。我有自定义导航控制器代码,我将多行代码放入。我知道那里的代码已经可以工作,但我的多行部分不起作用。多行导航栏标题
let titleLabel = UILabel()
titleLabel.frame = CGRectMake(0, 0, self.navigationBar.frame.width, self.navigationBar.frame.height * 2)
titleLabel.numberOfLines = 0
titleLabel.lineBreakMode = .ByWordWrapping
navigationItem.titleView = titleLabel
但是文本仍然在最后跑掉。我也试过把它放到个人视图控制器本身,在navigationItem
前面加上self.navigationController?.
,结果相同。
有没有什么我在我的代码,将保持标题标签使用多行缺少?
答
下面是如何创建一个多行的导航栏标题
let label: UILabel = UILabel(frame: CGRectMake(0, 0, 400, 50))
label.backgroundColor = UIColor.clearColor()
label.numberOfLines = 2
label.font = UIFont.boldSystemFontOfSize(16.0)
label.textAlignment = .Center
label.textColor = UIColor.whiteColor()
label.text = "This is a\nmultiline string for the navBar"
self.navigationItem.titleView = label
雨燕3.0的代码示例:
let label = UILabel(frame: CGRect(x:0, y:0, width:400, height:50))
label.backgroundColor = .clear
label.numberOfLines = 2
label.font = UIFont.boldSystemFont(ofSize: 16.0)
label.textAlignment = .center
label.textColor = .white
label.text = "This is a\nmultiline string for the navBar"
self.navigationItem.titleView = label
+0
需要进行一些调整才能使其表现得更像我想要的,但这确实有帮助。 –
+0
我用'navigationItem.titleView'没有明确设置框架,它工作得很好。 – gutte
答
使用此得到完全按照您想要的标签位置:
let labelWidth = navBar.bounds.width - 110
let label = UILabel(frame: CGRect(x:(navBar.bounds.width/2) - (labelWidth/2), y:0, width:labelWidth, height:navBar.bounds.height))
label.backgroundColor = UIColor.clear
label.numberOfLines = 0
label.font = UIFont.boldSystemFont(ofSize: 13.0)
label.textAlignment = .center
label.textColor = UIColor.black
label.lineBreakMode = .byWordWrapping
label.text = loadedName
navBar.topItem?.title = nil
navBar.addSubview(label)
顶部lin的110值e是标签两侧的间距。
您的'navigationBar.frame.width'尺寸可能尚未适合屏幕大小。你可能想重载'viewDidLayoutSubviews'来检测正确的帧。 –