2

是否可以限制 UILabel 的文本长度。我知道我可以限制我分配给标签的字符串,但是我只需要知道...在 UILabel 级别有没有可能做到这一点?

就我而言,我只想在 UILabel 中显示 10 个字符。

4

5 回答 5

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];
    }

}
于 2015-03-12T05:04:39.867 回答
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];

Further by changing the value of constrainedToSize: you can fix the maximum size of UILabel

于 2013-05-04T05:45:13.007 回答
2

是的,您可以使用:

  your_text = [your_text substringToIndex:10];
    your_label.text = your_text;

希望它可以帮助你。

于 2013-05-04T05:40:56.003 回答
1
NSString *temp = your string;
if ([temp length] > 10) {
    NSRange range = [temp rangeOfComposedCharacterSequencesForRange:(NSRange){0, 10}];
    temp = [temp substringWithRange:range];

}
coverView.label2.text = temp;
于 2013-05-04T05:40:47.940 回答
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);

这是日志:

2013-05-09 15:43:11.077 FreakyLabel [5925:11303] lbl.text = Hello Newb

于 2013-05-09T10:20:39.667 回答