Как выровнять текст 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 с прямоугольником, где вы хотите использовать.

  • Xcode: сделать клик по ярлыкам
  • Вычисление размера текста UILabel
  • Как создать UILabel или UITextView с жирным и нормальным текстом?
  • UILabel автоматическое вырезание нижних пикселей
  • Как добавить фоновую линию в многострочной метке с помощью NSAttributedString в ios объектно-c
  • Текст UILabel с несколькими цветами шрифта
  • Как узнать, подходит ли NSString в UILabel или нет и индекс последней строки, которая подходит?
  • Получить количество строк, необходимых для UILabel из NSString?
  • iOS: CGRect конкретного текста в строке UILabel
  • Многострочный UILabel пропускает последнюю строку иногда iOS
  • UILabel не может стать первым ответчиком и показать inputView в UITableView
  • Давайте будем гением компьютера.