是否可以根据屏幕尺寸和不同的设备方向(例如)在自动布局中的字符串的 5 个字符之前截断 UILabel 文本。
测试测试测试测试测试...*1234
我知道
lineBreakMode
有几种可能的UILabel
,例如.byTruncatingTail, .byTruncatingMiddle etc.
,但对我的情况没有任何作用。任何建议将不胜感激。
感谢上面的每一次回答和评论!
所以我终于能够完成它了,它在
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
}
您可以通过处理字符串索引来非常优雅地完成您所要求的事情。如果您计划在代码中的几个位置执行此操作,请考虑在
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
}
}