Ios UINavigationItem标题截断

Ios UINavigationItem标题截断,ios,swift,uinavigationcontroller,uinavigationbar,uinavigationitem,Ios,Swift,Uinavigationcontroller,Uinavigationbar,Uinavigationitem,我有两个字符串组成的文本: A(B) 我想使用这两个字符串作为UINavigationItem的标题,但在截断的情况下,我只希望A被截断,而不希望B被截断 例如: 我想要的标题是“敏捷的棕色狐狸(跳过懒狗)”。 屏幕太小,因此标题被截断,现在是“快速棕色狐狸跳跃(跳过…” 我想要的是:“快br…(越过懒狗)” 我该怎么做呢?首先检查导航栏中允许作为标题而不截断的字符数。接下来,在设置标题之前,检查字符串的总长度是否小于这些字符数。现在根据条件设置组合字符串或仅B。因为xcode无法检测您的哪个部

我有两个字符串组成的文本: A(B)

我想使用这两个字符串作为UINavigationItem的标题,但在截断的情况下,我只希望A被截断,而不希望B被截断

例如: 我想要的标题是“敏捷的棕色狐狸(跳过懒狗)”。 屏幕太小,因此标题被截断,现在是“快速棕色狐狸跳跃(跳过…”

我想要的是:“快br…(越过懒狗)”


我该怎么做呢?

首先检查导航栏中允许作为标题而不截断的字符数。接下来,在设置标题之前,检查字符串的总长度是否小于这些字符数。现在根据条件设置组合字符串或仅B。

因为xcode无法检测您的哪个部分你想停下来的标题和你想重新开始的部分,你需要自己去做

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.title = "Heal the world make it a better place for you and for me and the entire human race"
    setNavTitle(title: self.navigationItem.title!)
}

func setNavTitle(title: String)
{
    //get the last 10 characters of your title, change the number to your need
    let last10 = title.substring(from:title.index(title.endIndex, offsetBy: -14))

    //get the first 10 characters of your title, change the number to your need
    let first10 = title.substring(to: title.index(title.startIndex, offsetBy: 14))

    //concatenate the strings
    let title = first10 + " ... " + last10
    self.navigationItem.title = title
}

如果你能为这个问题提供更多的上下文,你想做什么,这会很有帮助。请给我们看一些代码。如果你解释得更多,会更好。添加了一个示例,其中一个解决方案是在导航栏上添加标签,并使用“截断中间”获取所需输出的标签属性。如何检查导航栏允许的字符数?默认情况下,最多允许28个字符。最好检查标题字符串的长度应小于18个字符。每个屏幕大小允许28个字符?是。如果没有右栏按钮和左栏按钮,则会检查。如果有如果存在条形按钮,则必须排除这些按钮的宽度。此代码的问题是它不总是10个字符。它会根据屏幕大小进行更改。获取屏幕大小(CGFloat width=[UIScreen mainScreen].bounds.size.width;),然后根据需要调整标题长度