- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个多行 UILabel
(numberOfLines
= 0)。它的宽度可以在运行时改变,有时这会导致截断和/或重新包装。一些例子最能说明这一点:
示例1:宽度的减小导致不同的断行点
示例2:宽度减小导致截断
示例 3:宽度的减少导致截断和不同的换行位置
示例4:宽度的减少对截断或换行位置没有任何影响
由于这种格式上的变化可能非常刺耳,我打算将其隐藏在一些动画(可能是淡入/淡出)后面。然而,第一个障碍是确定何时我需要这样做。我不想在标签调整大小时应用动画 - 仅当它会导致截断或换行位置发生变化时才应用动画。
我该如何测试它?对于示例 1、2 和 3,测试应返回 YES,但对于示例 4 应返回 NO。
注意:调整大小永远不会改变我示例中的行数。
注意 2:如果有人有更好的与文本格式相关的标签,我很想知道它们 - 请随时编辑。
注意 3:如果您有兴趣看到此行为的完成,请在 iPhone 上试用 Apple 的 mail.app。查看收件箱时,滑动电子邮件并观察摘要行在重新包装和/或截断时淡入/淡出(但在不需要时不会)。
最佳答案
Swift 3 解决方案
您可以在分配字符串后统计行数,并与标签的最大行数进行比较。
import Foundation
import UIKit
extension UILabel {
func countLabelLines() -> Int {
// Call self.layoutIfNeeded() if your view is uses auto layout
let myText = self.text! as NSString
let attributes = [NSFontAttributeName : self.font]
let labelSize = myText.boundingRect(with: CGSize(width: self.bounds.width, height: CGFloat.greatestFiniteMagnitude), options: NSStringDrawingOptions.usesLineFragmentOrigin, attributes: attributes, context: nil)
return Int(ceil(CGFloat(labelSize.height) / self.font.lineHeight))
}
func isTruncated() -> Bool {
if (self.countLabelLines() > self.numberOfLines) {
return true
}
return false
}
}
关于objective-c - 如何判断 UILabel 何时将被截断和/或其换行位置将更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12945978/
在 Vaadin 7.0,显示时JavaBean Table 中的数据与 BeanContainer ,用新数据刷新表的正确方法是什么? 最佳答案 该表通过监听器监视表项的属性。如果您通过表的 Ite
首先,我使用的是带有 Axis2 1.6.2 的 eclipse,我正在 tomcat 6 上部署我创建的 Web 服务。Web 服务是在 eclipse 中通过自上而下的方法创建的。 我被要求使对我
我已将 Rails 3.1.1 应用程序升级到 Rails 3.1.3,现在,对于每个请求,它仅响应错误数量的参数(3 for 1)。不幸的是,它没有说明错误在哪里,并且应用程序跟踪为空。我认为存在一
我是一名优秀的程序员,十分优秀!