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

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

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

Ответы [ 2 ]

10 голосов
/ 31 мая 2009

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

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

или

[myLabel sizeToFit];
myLabel.center = CGPointMake(x, y);
2 голосов
/ 30 мая 2009

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

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 для ограничения определенной ширины или высоты.

РЕДАКТИРОВАТЬ: я не понимал, что вы хотите, чтобы программно рассчитать размер Добавлено лучшее объяснение выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...