ios - 如何检查 UILabel 是否被截断?

我有一个 UILabel,它的长度可以不同,具体取决于我的应用在 iPhone 或 iPad 上是以纵向还是横向模式运行。当文本太长而无法在一行上显示并且它被截断时,我希望用户能够按下它并弹出全文。

如何检查 UILabel 是否截断了文本?甚至可能吗?现在我只是根据我所处的模式检查不同的长度,但效果不是很好。

最佳答案

您可以计算width of the string看看宽度是否大于label.bounds.size.width

NSString UIKit Additions有几种方法可以计算具有特定字体的字符串的大小。但是,如果您的标签有一个 minimumFontSize 允许系统将文本缩小到该大小。您可能想使用 sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:在那种情况下。

CGSize size = [label.text sizeWithAttributes:@{NSFontAttributeName:label.font}];
if (size.width > label.bounds.size.width) {
   ...
}

https://stackoverflow.com/questions/3077109/

相关文章:

ios - UICollectionView 的 cellForItemAtIndexPath 没有

objective-c - 如何在运行时使用 Objective-C 动态创建选择器?

java - Java接口(interface)和Objective-C协议(protocol)的区

ios - 无法在模拟器中运行应用程序 : An error was encountered whi

iphone - Xcode 4.2 首选项 "Support Wirelessly Connect

iphone - iPhone 上的 JSON 和核心数据

objective-c - 有没有办法强制在 NSArray、NSMutableArray 等上输入

objective-c - 将 writeToFile :atomically: overwrite

objective-c - 是什么让钥匙串(keychain)项目独一无二(在 iOS 中)?

objective-c - 如何摆脱 Xcode 中的 "unused variable"警告?