Така че се опитвам да намеря малко текст, за да се побере. Използвах отговора от Преоразмеряване на UILabel да пасне с Word Wrap, за да направи текста подходящ. Това изглежда работи, освен че текстът е силно намален и заема само около 50% от ширината на екрана.
Това е кодът, който се изпълнява, когато е представен контролерът за изглед:
self.user.title = @"Jeffrey C. Louie\n2326 Rockford Road\nCharlestown, MA 02129";
[self.titleLabel setText:self.user.title];
NSInteger fsize = 200;
[self.titleLabel setFont:[UIFont fontWithName:self.titleLabel.font.fontName size:fsize]];
float height = [self.user.title sizeWithFont:self.titleLabel.font constrainedToSize:CGSizeMake(self.titleLabel.bounds.size.width, 99999) lineBreakMode:NSLineBreakByWordWrapping].height;
while (height > self.titleLabel.bounds.size.height && height != 0) {
fsize -=1;
[self.titleLabel setFont:[UIFont fontWithName:self.titleLabel.font.fontName size:fsize]];
height = [self.user.title sizeWithFont:self.titleLabel.font constrainedToSize:CGSizeMake(self.titleLabel.bounds.size.width, 99999) lineBreakMode:NSLineBreakByWordWrapping].height;
}
for (NSString *word in [self.user.title componentsSeparatedByString:@" "]) {
float width = [word sizeWithFont:self.titleLabel.font].width;
while (width > self.titleLabel.bounds.size.width && width != 0) {
fsize -= 3;
[self.titleLabel setFont:[UIFont fontWithName:self.titleLabel.font.fontName size:fsize]];
width = [word sizeWithFont:self.titleLabel.font].width;
}
}
Струва ми се, че текстът е мащабиран, за да побере целия текст на 1 ред, сякаш твърдите прекъсвания на редовете не съществуват. Има ли начин да накарате UILabel да знае, че има прекъсване на реда и да мащабира съответно текста на редовете?
Благодаря