繁体   English   中英

在字符串的 5 个字符之前截断 UILabel 文本

[英]Truncate UILabel text before 5 character of string

是否可以根据屏幕大小和不同的设备方向在自动布局中截断字符串的 5 个字符之前的 UILabel 文本。

测试测试测试测试测试测试...*1234

我知道UILabel有几种lineBreakMode可能,例如.byTruncatingTail, .byTruncatingMiddle etc.但对我的情况没有任何作用。 任何建议将不胜感激。

感谢上面的每一次回答和评论!

所以最后我能够完成它,这在iPhoneiPad所有设备上都非常有效, landscapeportrait模式也可以在 iPad 中使用split mode

所以我想在这里分享我的实现:

第一步:创建一个 TitleView.xib 文件。

Step2:取两个标签的Name LabelNumber Label

步骤 3:给定以下两个标签的约束:

  • 名称标签约束:

在此处输入图片说明

  • 名称标签换行符:截尾:

在此处输入图片说明

  • 数字标签约束:

在此处输入图片说明

Step4:然后在viewDidLoad方法中加载xib:

override func viewDidLoad() {
        super.viewDidLoad()
        let titleView = Bundle.main.loadNibNamed("TitleView", owner: self, options: nil)?[0] as! TitleView
        self.navigationItem.titleView = titleView
    } 

通过处理字符串索引,您可以非常优雅地完成您的要求。 如果您计划在代码中的几个地方执行此操作,请考虑在String上创建extension ,以使其更易于重用。 还可以考虑使用省略号 ( ) 而不是三个句点。

extension String {

    func truncated(after count: Int) -> String {
        let truncateAfter = index(startIndex, offsetBy: count)
        guard endIndex > truncateAfter else { return self }
        return String(self[startIndex..<truncateAfter]) + "…"
    }
}

自己试试

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM