也許你可以做只有一個UILabel
每行:
定義留字,如「咖啡」和類似「1.45£」一個合適的人。
通過連接左邊的單詞和空格以及右邊的單詞來構造一個字符串。
定義width
,並要與 字符串標籤要包含在,與CGSizeMake(width, height)
框架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需要兩個對象來實現這一點。 –
我們需要HTML&CSS或我們的本地代碼中的2個對象。我同意@BrianShamblen。最好的事情是用HTML和CSS進行web查看。 –