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

问题描述 投票:0回答:2

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

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

我知道

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

ios swift string uilabel swift4.2
2个回答
1
投票

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

所以我终于能够完成它了,它在

iPhone
iPad
的所有设备上都运行良好,在
landscape
portrait
模式中也适用于iPad中的
split mode

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

第1步:创建TitleView.xib文件。

第2步:拿了两个标签的

Name Label
Number Label

第三步: 对两个标签都施加以下约束:

  • 名称标签约束:

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

  • 数字标签约束:

第四步: 然后用

viewDidLoad
方法加载xib:

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

0
投票

您可以通过处理字符串索引来非常优雅地完成您所要求的事情。如果您计划在代码中的几个位置执行此操作,请考虑在

extension
上创建
String
,以使其更易于重用。另请考虑使用省略号 (
) 而不是仅三个句点。

extension String {
        
    func truncated(after count: Int, suffix: String = ) -> String {
        guard count < self.count else {
            return self
        }
        
        let truncateAfter = index(startIndex, offsetBy: count)
        return String(self[startIndex..<truncateAfter]) + suffix
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.