Ben*_*ams 5 iphone objective-c uilabel
无论如何我可以获得UILabel文本的截断版本吗?
简而言之,我有一段文字,两个UILabels标签A,长2行,标签B,高度可变.标签A在标签B之上.想法是标签A显示文本段落的前两行,并且在某个用户动作时,标记B因为可见并显示文本的其余部分.
我无法确定标签B中应该包含哪些内容,因为我不知道标签A中显示的是什么.我还需要从标签A中删除"...".
注意:我意识到这有点令人费解,但有一些很好的理由,我不会混淆这个问题.
Tho*_*ler 11
我想知道你是否可以使用NSString UIKit Additions中的方法来计算出多少适合标签A.
粗略的方法可能是从文本的第一个字符开始并测试它将占用的大小(-sizeWithFont:forWidth:lineBreakMode:可能是?)然后继续一次添加一个字符,直到它不再适合您的标签A.
我希望其他人能想出更好的方法来做到这一点,但上述情况应该有效.
更新
昨晚我看了一下我自己的应用程序的Core Text并且遇到了CTFramesetterSuggestFrameSizeWithConstraints.您可以通过查看fitRange该函数来使用它来确定您的字符串中有多少符合标签.
更新2:
我认为这应该可行,但我刚刚在这里输入了这个,所以它甚至可能无法编译:
UIFont *uiFont = [UIFont systemFontOfZise:13.0f]; // whichever font you're using
CTFontRef ctFont = CTFontCreateWithName((CFStringRef)uiFont.fontName, uiFont.pointSize, NULL);
NSDictionary *attr = [NSDictionary dictionaryWithObject:(id)ctFont forKey:(id)kCTFontAttributeName];
CFRelease(ctfont);
NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:yourLabelText attributes:attr];
CTFrameSetterRef frameSetter = CTFrameSetterCreateWithAttributedString((CFAttributedStringRef)attrString);
[attrString release];
CFRange fitRange;
CTFrameSetterSuggestFrameSizeWithConstrains(
frameSetter,
CFRangeMake(0, 0),
NULL,
CGSizeMake(labelWidth, labelHeight),
&fitRange);
CFRelease(frameSetter);
CFIndex numberOfCharactersThatFit = fitRange.length;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5611 次 |
| 最近记录: |