2

在我的应用程序中,我有一个UILabel包含越来越多的条目,例如,每次用户按下按钮时,标签末尾都会附加一个“1”。但是我希望能够检测到何时向标签添加额外的条目会导致它超出其容器的大小并成为丑陋的“111 ...”标签,所需的行为类似于以下内容:

int maximumLengthBeforeOverrun = self.maximumLengthBeforeLabelOverrun;
if(label.text.length > maximumLengthBeforeOverrun) {
    NSString * newLabel = [label.text substringTo:label.text.length - 1]
    label.text = newLabel;
}
label.text = [label.text appendWithString:toAppend]

我的问题是 IOS SDK 中有一些方法可以为我做到这一点吗?或者我应该使用不同的方法来显示信息?

4

2 回答 2

4

你可以使用sizeWithFont

NSString *str = @"Test String";
CGSize size = [str sizeWithFont:label.font];

然后使用 size 与 label.frame.size 进行比较

于 2012-07-01T17:38:29.640 回答
1

sizeWithFont 在 iOS 7 中已被弃用,因此您需要使用 sizeWithAttributes

NSString *str = @"Test String";
NSDictionary *attributes = @{NSFontAttributeName: label.font};
CGSize size = [str sizeWithAttributes:attributes];
于 2014-11-14T17:17:52.697 回答