Может быть, вы могли бы сделать следующее с только один UILabel
на линии:
Определить левое слово, как «Кофе» и право один, как «1,45 £».
Сделайте строку, объединив левое слово с пробелом и правой.
Определить width
и height
кадра, который вы хотите ярлык с этой строки, которая должна содержаться в, с CGSizeMake(width, height)
.
Оцените размер этой этикетки с использованием sizeThatFits
предоставления CGSize
ограничения, которые вы хотите в качестве аргумента.
Если оценочная ширина метки меньше требуемой ширины , увеличьте размер вашей метки, добавив пробел в строку и повторите.
В коде:
NSArray *leftWords = @[@"Coffee", @" milk, skinny", @"Danish Pastry", @"Coca Cola", @"Full English Bfst"];
NSArray *rightWords = @[@"£1.45", @"", @"£1.75", @"£1.10", @"£12.50"];
CGFloat xOffset = 5;
CGFloat yOffset = 60;
CGFloat labelHeight = 44;
CGFloat labelWidth = 300;
for (int i = 0; i < leftWords.count; i ++) {
UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(xOffset, yOffset + i * labelHeight, labelWidth, labelHeight)];
aLabel.numberOfLines = 1;
aLabel.textAlignment = NSTextAlignmentLeft;
aLabel.layer.borderColor = [UIColor greenColor].CGColor;
aLabel.layer.borderWidth = 1.0f;
NSString *leftWord = [leftWords objectAtIndex:i];
NSString *rightWord = [rightWords objectAtIndex:i];
NSMutableString *spaces = [[NSMutableString alloc] initWithString:@" "];
const CGFloat MAX_WIDTH = 310;
CGSize maxLabelSize = CGSizeMake(MAX_WIDTH, CGFLOAT_MAX);
CGSize expectedSize = CGSizeMake(0, 0);
CGFloat expectedWidth = 0.0;
NSString *phrase = @"";
do {
phrase = [NSString stringWithFormat:@"%@%@%@", leftWord, spaces, rightWord];
aLabel.text = phrase;
expectedSize = [aLabel sizeThatFits:maxLabelSize];
expectedWidth = expectedSize.width;
// Increase spaces
[spaces appendString:@" "];
} while (expectedWidth < MAX_WIDTH);
CGRect frame = aLabel.frame;
frame.size = expectedSize;
aLabel.frame = frame;
[self.view addSubview:aLabel];
}
я поместил выше в моем viewDidLoad
и сделал #import <QuartzCore/QuartzCore.h>
, чтобы маркировка границы UILabel.
Вот скриншот моего рабочего кода:
Он работает на «молоко, тощая» линия тоже, как выравнивание текста метки устанавливаются в NSTextAlignmentLeft
.
Надеюсь, это поможет.
Я не думаю, что есть способ сделать это, не имея двух объектов, один с выравниванием слева и один с правильным выравниванием. Даже для CSS потребуется два объекта для достижения этого. –
нам нужны 2 объекта либо в HTML и CSS, либо в нашем родном коде. Я согласен с @BrianShamblen. Лучше всего искать веб-интерфейс с HTML и CSS. –