2015-04-25 3 views
-2

Я хочу, чтобы словосочетание для строки просто требовалось для целей расчета динамической высоты, потому что в UILabel NSLineBreakByWordWrapping подсчет высоты строки для динамической цели легко настраивается. Высота UILabel может быть любой приятель, дайте мне знать словосочетание в строке?NSString wordwrapping, как UILabel NSLineBreakByWordWrapping

CGSize size = CGSizeZero; 
NSString *carNameString = cars.name; 
carNameString = [carNameString stringByReplacingOccurrencesOfString:@"\n" withString:@"\n\n"]; 

CGRect f1 = [carNameString boundingRectWithSize:CGSizeMake([[UIScreen mainScreen]bounds].size.width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{ NSFontAttributeName:[UIFont fontWithName:@"Copperplate" size:20] } context:nil]; 
size = CGSizeMake(f1.size.width, f1.size.height + 1); 

Примечание: Я использую IOS Version 6.3

Edit: Вот в UILabel Код:

[carLabel setBackgroundColor:[UIColor clearColor]]; 
    [carLabel setText:carNameString]; 
    [carLabel setAdjustsFontSizeToFitWidth:YES]; 
    [carLabel setLineBreakMode:NSLineBreakByWordWrapping]; 
    [carLabel setNumberOfLines:0]; 
    [carLabel setTextColor:[UIColor whiteColor]]; 

ответ

2

Вам не кажется, используют размер вы вычисленный из ограничивающего прямоугольника ,
Кроме того, я бы посоветовал использовать тот же шрифт для лейбла, чем вы использовали для вычисления ограничивающего прямоугольника вместо:

[label setAdjustsFontSizeToFitWidth:YES]; 


Этот код должен работать:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)]; 
label.numberOfLines = 0; 
label.font = [UIFont fontWithName:@"Copperplate" size:20]; 
label.text = carNameString; 

Однако, ваш код не обеспечивает инициализацию вашего UILabel, и вы не даете нам знать, как вы устанавливаете фрейм своей метки.

Если вы хотите использовать его с автоматической компоновкой, вам необходимо установить translatesAutoresizingMaskIntoConstraints в NO и использовать размер, рассчитанный на ограничительном прямоугольнике, чтобы задать размер вашего вида контейнера.

Вот пример на основе кода, описывающий его:

UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)]; 
[self.view addSubview:containerView]; 

UILabel *label = [UILabel new]; 
label.translatesAutoresizingMaskIntoConstraints = NO; 

[containerView addSubview:label]; 

[containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[label]|" 
                     options:0 
                     metrics:nil 
                     views:NSDictionaryOfVariableBindings(label)]]; 
[containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[label]|" 
                     options:0 
                     metrics:nil 
                     views:NSDictionaryOfVariableBindings(label)]]; 
label.numberOfLines = 0; 
label.font = [UIFont fontWithName:@"Copperplate" size:20]; 
label.text = carNameString; 
+0

Я добавил UILabel согласно вашему запросу @performat –

+0

@onestopappsolution Я отредактировал мой ответ, дайте мне знать, если это помогло – Performat

+0

спасибо я нашел решение ... так что спасибо за ваш обновленный ответ, заразивший вчера, я нашел решение самостоятельно, а именно: [carLabel setAdjustsFontSizeToFitWidth: YES]; и удалите это: // [carLabel setLineBreakMode: NSLineBreakByWordWrapping]; –

Смежные вопросы