是否可以限制UILabel的文本长度..我知道我可以限制字符串,无论我分配给标签,但我只需要知道......有没有可能在UILabel级别中执行此操作?< / p>
在我的情况下,我只想在UILabel中显示10个字符..
答案 0 :(得分:8)
我通过在viewDidLoad中添加一个通知来解决这个问题:监听长度超过一个值的时间:
- (void)limitLabelLength {
if ([self.categoryField.text length] > 15) {
// User cannot type more than 15 characters
self.categoryField.text = [self.categoryField.text substringToIndex:15];
}
}
答案 1 :(得分:2)
是的,你可以使用:
your_text = [your_text substringToIndex:10];
your_label.text = your_text;
希望它对你有所帮助。
答案 2 :(得分:2)
NSString *string=@"Your Text to be shown";
CGSize textSize=[string sizeWithFont:[UIFont fontWithName:@"Your Font Name"
size:@"Your Font Size (in float)"]
constrainedToSize:CGSizeMake(100,50)
lineBreakMode:NSLineBreakByTruncatingTail];
UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 50,textSize.width, textSize.height)];
[myLabel setLineBreakMode:NSLineBreakByTruncatingTail];
[myLabel setText:string];
进一步通过更改constrainedToSize的值:您可以修复UILabel的最大大小
答案 3 :(得分:1)
NSString *temp = your string;
if ([temp length] > 10) {
NSRange range = [temp rangeOfComposedCharacterSequencesForRange:(NSRange){0, 10}];
temp = [temp substringWithRange:range];
}
coverView.label2.text = temp;
答案 4 :(得分:0)
我看不出任何直接的方法来实现这一目标。但是我们可以做一些事情,让UILabel
为@interface UILabel(AdjustSize)
- (void) setText:(NSString *)text withLimit : (int) limit;
@end
@implementation UILabel(AdjustSize)
- (void) setText:(NSString *)text withLimit : (int) limit{
text = [text substringToIndex:limit];
[self setText:text];
}
@end
UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectZero];
[lbl setText:@"Hello Newbee how are you?" withLimit:10];
NSLog(@"lbl.text = %@", lbl.text);
您可以在您想要这样做的类中创建它(或者在单独的扩展类中创建它并导入您想要此功能的地方);
现在使用以下方式:
{{1}}
这是日志:
2013-05-09 15:43:11.077 FreakyLabel [5925:11303] lbl.text = Hello Newb