Как выровнять текст UILabel снизу?

Как UILabel можно UILabel снизу. Скажем, мой ярлык может содержать три строки текста. Если входной текст является отдельной строкой, то эта строка должна быть нижней частью метки. Пожалуйста, обратитесь к приведенному ниже изображению для лучшего понимания. Оранжевая область – это полный кадр метки. В настоящее время она имеет одну линию и выровнен по центру. Так что я хочу, он должен всегда выравниваться снизу, независимо от того, сколько строк.

введите описание изображения здесь

Предложите свои идеи.

Спасибо.

Вот два способа сделать это …

1. Сначала установите numberOfLines на 0, а затем используйте свойство UILabel для UILabel чтобы ваш UILabel отображался с его contentSize .

 yourLabel.numberOfLines = 0; [yourLabel sizeToFit]; 

См. Дополнительную информацию по этой ссылке: вертикально выровнять текст внутри UILabel

2. Другой вариант – взять UITextField вместо UILabel и установить userInteractionEnabled в NO как userInteractionEnabled ниже …

 [yourTextField setUserInteractionEnabled:NO]; 

а затем установите свойство contentVerticalAlignment внизу, как contentVerticalAlignment ниже.

 [yourTextField setContentVerticalAlignment:UIControlContentVerticalAlignmentBottom]; 

ОБНОВИТЬ

Кроме того, с UITextField мы не можем достичь нескольких строк. Поэтому вместо этого мы можем использовать UITextView и установить для userInteractionEnabled значение NO . Затем используйте приведенный ниже код, чтобы выровнять его по низу.

 CGFloat topCorrect = ([label bounds].size.height - [label contentSize].height); topCorrect = (topCorrect <0.0 ? 0.0 : topCorrect); label.contentOffset = (CGPoint){.x = 0, .y = -topCorrect}; 

Подкласс UILabel

 @interface Label : UILabel @end 

Затем переопределите drawTextInRect так

 @implementation Label - (void)drawTextInRect:(CGRect)rect { if(alignment == top) { rect.size.height = [self sizeThatFits:rect.size].height; } if(alignment == bottom) { CGFloat height = [self sizeThatFits:rect.size].height; rect.origin.y += rect.size.height - height; rect.size.height = height; } [super drawTextInRect:rect]; } @end 

Я устанавливаю только нижнее ограничение на супер-представление в IB, которое работает для меня, не используя код, а также количество строк для максимального ограничения.

Я была такая же проблема. Вот как я сделал, чтобы выровнять текст до нижней части моего UILabel:

 - (void)alignLabel:(UILabel *)l withText:(NSString *)text verticalAlignOption:(int)vertAlign{ CGSize stringSize = [text sizeWithFont:l.font constrainedToSize:l.frame.size lineBreakMode:l.lineBreakMode]; switch (vertAlign) { case 0: // align = top l.frame = CGRectMake(l.frame.origin.x, l.frame.origin.y, l.frame.size.width, stringSize.height ); break; case 1: // align = bottom l.frame = CGRectMake(l.frame.origin.x, (l.frame.origin.y + l.frame.size.height) - stringSize.height, l.frame.size.width, stringSize.height ); break; case 2: // align = middle // default break; } l.text = text; } 

Ах, вы просто вызываете метод, подобный этому, чтобы выровнять нижнюю часть:

 [self alignLabel:self.mediaTitle withText:@"My text to align" verticalAlignOption:1]; 

Другой вариант: использовать один ярлык для цвета фона, я называю это одним оригиналом Label, а другой для текста, называемого textLabel в моем примере. Затем вычислите высоту и координату Y для textLabel:

 [textLabel sizeToFit]; int height = textLabel.frame.size.height; int yCoord = originalLabel.frame.origin.y + originalLabel.frame.size.height - height; textLabel.frame = CGRectMake( originalLabel.frame.origin.x, yCoord, textLabel.frame.size.width, height); 

Вы можете подклассифицировать UILabel и переопределить метод:

 - (void)drawTextInRect:(CGRect)rect 

вызовите super drawTextInRect с прямоугольником, где вы хотите использовать.

  • Как получить отрегулированный размер шрифта от UILabel при настройкеFontSizeToFitWidth - ДА в iOS 7?
  • Самонастраивающаяся метка в ячейке таблицы
  • UILabel с текстом двух разных цветов
  • Изменение высоты UITableViewCell после прокрутки вверх?
  • Как сделать редактируемый ярлык в iOS (например, назвать список напоминаний)?
  • Получение слова, затронутого в UILabel / UITextView
  • iOS - установить максимальную ширину для UILabel с автоопределением
  • Swift: Как вы можете повернуть текст для UIButton и UILabel?
  • Маска обратного слоя для метки
  • Раскадровка - автоматическая термоусадка UILabel не работает
  • Многострочный UILabel и UITextView с использованием раскадровки, автоматической компоновки и быстрой
  • Давайте будем гением компьютера.