Каков наилучший способ установить координаты x, y UILabel, но разрешить автоматическую ширину / высоту на iPhone?

StackOverflow https://stackoverflow.com/questions/929014

  •  06-09-2019
  •  | 
  •  

Вопрос

Я точно знаю, где я хочу расположить свою UILabel в UIView, но я не обязательно знаю, какую высоту / ширину я хочу, чтобы она имела во время компиляции, поэтому установка width / height в initWithFrame бесполезна.Я хочу иметь возможность просто инициализировать его точки x, y, а затем использовать что-то вроде [myLabel sizeToFit], чтобы он мог автоматически устанавливать ширину / высоту на основе моего режима прерывания и содержимого.

Решение, которое я ищу, заключается в том, как установить исходную точку UILabel, установив для ее ширины / высоты динамическое число на основе текста, установленного для метки.

Нет правильного решения

Другие советы

Сначала измените размер метки, затем установите ее начало или центр:

[myLabel sizeToFit];
CGRect frame = myLabel.frame;
frame.origin = CGPointMake(x, y);
myLabel.frame = frame;

или

[myLabel sizeToFit];
myLabel.center = CGPointMake(x, y);

Если у вас уже есть фрейм с динамическим размером, но вы хотите изменить начало координат:

CGRect myFrame = myLabel.frame;
myFrame.origin = aCGPoint;
myLabel.frame = myFrame;

Если вам нужно рассчитать размер:

CGSize suggestedSize = [myString sizeWithFont:myLabel.font constrainedToSize:CGSizeMake(FLT_MAX, FLT_MAX) lineBreakMode:UILineBreakModeWordWrap];

Конечно, вы можете изменить FLT_MAX, чтобы ограничить его определенной шириной или высотой.

Редактировать:Я не знал, что вы хотите программно рассчитать размер.Добавлено лучшее объяснение выше.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top