Каков наилучший способ установить координаты x, y UILabel, но разрешить автоматическую ширину / высоту на iPhone?
-
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, чтобы ограничить его определенной шириной или высотой.
Редактировать:Я не знал, что вы хотите программно рассчитать размер.Добавлено лучшее объяснение выше.