首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NavigationTitle与subTitle重叠

NavigationTitle与subTitle重叠
EN

Stack Overflow用户
提问于 2017-06-27 17:50:05
回答 2查看 78关注 0票数 0

我有一个带有navigationBar和rightButtonItem的navigationBar,还有一个带有右和左的navigationBar。

我练习使用navigationBar使用subTitle,但是当我将title&subtitle字符串设置为long时。

它将是重叠的,并且字符串正在截断。

我该怎么解决这个问题?

1

2

代码语言:javascript
复制
func setTitle(title:String, subtitle:String) -> UIView {
    let titleLabel = UILabel(frame: CGRect(x:0, y:-5, width:0, height:0))

    titleLabel.backgroundColor = UIColor.clear
    titleLabel.textColor = UIColor.red
    titleLabel.font = UIFont.boldSystemFont(ofSize: 14)
    titleLabel.text = title
    titleLabel.sizeToFit()

    let subtitleLabel = UILabel(frame: CGRect(x:0, y:18, width:0, height:0))
    subtitleLabel.backgroundColor = UIColor.clear
    subtitleLabel.textColor = UIColor.blue
    subtitleLabel.font = UIFont.systemFont(ofSize: 12)
    subtitleLabel.text = subtitle
    subtitleLabel.sizeToFit()

    let titleView = UIView(frame: CGRect(x:0, y:0, width:max(titleLabel.frame.size.width, subtitleLabel.frame.size.width), height:30))
    titleView.addSubview(titleLabel)
    titleView.addSubview(subtitleLabel)

    let widthDiff = subtitleLabel.frame.size.width - titleLabel.frame.size.width

    if widthDiff > 0 {
        var frame = titleLabel.frame
        frame.origin.x = widthDiff / 2
        titleLabel.frame = frame.integral
    } else {
        var frame = subtitleLabel.frame
        frame.origin.x = abs(widthDiff) / 2
        titleLabel.frame = frame.integral
    }

    return titleView

}//source from here:https://gist.github.com/nazywamsiepawel/0166e8a71d74e96c7898
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-27 20:59:04

在您的代码的这一节中需要进行一点编辑:

代码语言:javascript
复制
if widthDiff > 0 {
    var frame = titleLabel.frame
    frame.origin.x = widthDiff / 2
    titleLabel.frame = frame.integral
} else {
    var frame = subtitleLabel.frame
    frame.origin.x = abs(widthDiff) / 2

    // this should be *subtitleLabel*
    //titleLabel.frame = frame.integral
    subtitleLabel.frame = frame.integral

}
票数 0
EN

Stack Overflow用户

发布于 2017-06-27 18:11:46

与创建另一个标签不同,您可以尝试一个带有两行的标签,这样它们就不会重叠。使用此代码

代码语言:javascript
复制
label.numberOfLines = 2

设置文本时,在字符串中使用\n指示下一行,如下所示

代码语言:javascript
复制
label.text= "Main title\nSub title"

如果您想对这两个标题使用不同的字体,请尝试使用属性化字符串,如

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44786784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档