[英]Truncate UILabel text before 5 character of string
是否可以根据屏幕大小和不同的设备方向在自动布局中截断字符串的 5 个字符之前的 UILabel 文本。
测试测试测试测试测试测试...*1234
我知道UILabel
有几种lineBreakMode
可能,例如.byTruncatingTail, .byTruncatingMiddle etc.
但对我的情况没有任何作用。 任何建议将不胜感激。
感谢上面的每一次回答和评论!
所以最后我能够完成它,这在iPhone
和iPad
所有设备上都非常有效, landscape
和portrait
模式也可以在 iPad 中使用split mode
!
所以我想在这里分享我的实现:
第一步:创建一个 TitleView.xib 文件。
Step2:取两个标签的Name Label
和Number 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.