4

我正在尝试将标签中的限制设置为 10 个字符,我是一般编程的新手,所以到目前为止这是我的第 3 个月......无论如何提前谢谢:-)

4

4 回答 4

11

您还可以创建一个String扩展并将其与任何文本字符串一起使用。您可以通过以下方式进行操作:

创建扩展:

extension String {
   func maxLength(length: Int) -> String {
       var str = self
       let nsString = str as NSString
       if nsString.length >= length {
           str = nsString.substring(with:
               NSRange(
                location: 0,
                length: nsString.length > length ? length : nsString.length)
           )
       }
       return  str
   }
}

您可以通过以下方式使用扩展:

label.text = "This is a Very Long Label".maxLength(length: 10)

之前的代码在Swift 5.0中测试过

于 2019-04-12T18:07:47.163 回答
9

如果您想将 UILabel 限制为仅 10 个字符,那么您只需为其分配一个长度为 10 的文本。您可以使用NSStringNSRange提取所需的文本。

let str = "This is a Very Long Label"
let nsString = str as NSString
if nsString.length >= 10
{
  label.text = nsString.substringWithRange(NSRange(location: 0, length: nsString.length > 10 ? 10 : nsString.length))
}
于 2015-10-05T23:01:19.130 回答
0

看看这个答案:https ://stackoverflow.com/a/39677331/2548473

我的版本是(Swift 5+):

extension String {
    func shorted(to symbols: Int) -> String {
        guard self.count > symbols else {
            return self
        }
        return self.prefix(symbols) + " ..."
    }
}
于 2021-09-28T10:15:14.767 回答
-2

斯威夫特 3

        let str = GL_GetNews[indexPath.row]["n_body"].stringValue
        let nsString = str as NSString
        if nsString.length > 0
        {
             cell.newsDescription.text = nsString.substring(with: NSRange(location: 0, length: nsString.length > 200 ? 200 : nsString.length))
        }
于 2017-08-06T10:48:05.647 回答