Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何限制UILabel文本长度-IOS_Iphone_Ios_Objective C_Cocoa Touch_Uilabel - Fatal编程技术网

Iphone 如何限制UILabel文本长度-IOS

Iphone 如何限制UILabel文本长度-IOS,iphone,ios,objective-c,cocoa-touch,uilabel,Iphone,Ios,Objective C,Cocoa Touch,Uilabel,是否可以限制UILabel的文本长度。。我知道我可以限制字符串,无论我分配给标签什么,但是我只需要知道。。。是否有可能在UILabel级别执行此操作 在我的例子中,我只想在UILabel中显示10个字符 是的,您可以使用: NSString *temp = your string; if ([temp length] > 10) { NSRange range = [temp rangeOfComposedCharacterSequencesForRange:(NSRange){0

是否可以限制UILabel的文本长度。。我知道我可以限制字符串,无论我分配给标签什么,但是我只需要知道。。。是否有可能在UILabel级别执行此操作

在我的例子中,我只想在UILabel中显示10个字符

是的,您可以使用:

NSString *temp = your string;
if ([temp length] > 10) {
    NSRange range = [temp rangeOfComposedCharacterSequencesForRange:(NSRange){0, 10}];
    temp = [temp substringWithRange:range];

}
coverView.label2.text = temp;
  your_text = [your_text substringToIndex:10];
    your_label.text = your_text;
希望对你有帮助

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的最大大小

我看不到任何直接的方法来实现这一点。但是我们可以做点什么,让我们为
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=你好,新手


我通过在viewDidLoad:中添加通知修复了此问题,该通知在长度超过某个值时侦听:

- (void)limitLabelLength {

    if ([self.categoryField.text length] > 15) {
        // User cannot type more than 15 characters
        self.categoryField.text = [self.categoryField.text substringToIndex:15];
    }

}

你能试试
[labelText substringToIndex:10]
你不能直接告诉标签只显示10个字符,我知道下面的答案不是你想要的,但它们是限制标签显示字符串的唯一可能性。它可能会起作用,但它会将整个标签大小减小到字符串长度,在我的情况下,我在标签的右端添加了一些视图,这不应该被打扰,所以我只需要限制文本,而不是整个标签。太好了!如果你还没有做过,记得投赞成票。