Ответ 1
Сделайте собственный макет вашей ячейки и выстройте UILabels с ограничениями внутри настраиваемой ячейки. Поскольку вы находитесь в пользовательском макете, ограничения должны делать трюк.
Я работаю над проектом, где мне нужно подстроить 3 UILabels
рядом друг с другом. Позвольте мне объяснить это на примере.
Я имею, например, следующее предложение. "Tim Moore commented on the little bear story"
Теперь мои три UILabels
будут содержать:
LABEL 1 --> Tim Moore
LABEL 2 --> commented on
LABEL 3 --> the little bear story
другой пример:
Dave Smits likes the status "We and only we can me a knew future and only we nobody else can make changes, so don't stop now !"
LABEL 1 --> Dave Smits
LABEL 2 --> likes the status
LABEL 3 --> "We and only we can me a knew future and only we nobody else can make changes, so don't stop now !"
Как вы можете видеть во втором примере предложение намного дольше.
Теперь у меня вопрос, как я могу выровнять эти три строки UILabels
друг за другом, чтобы получить хорошее предложение. Причина, по которой я отделяю ее в трех UILabels
, заключается в том, что мне нужно установить UITapgestures
на каждом UILabel
.
Я работаю в пользовательском UITableviewCell
, который использует autolayout
.
Любая помощь будет оценена!
Сделайте собственный макет вашей ячейки и выстройте UILabels с ограничениями внутри настраиваемой ячейки. Поскольку вы находитесь в пользовательском макете, ограничения должны делать трюк.
Вы можете использовать этот фрагмент кода, чтобы выстроили свои ярлыки. Установите numberOfLines: 0, чтобы они были многострочными.
-(void)adjustLabels
{
[self.label1 setText:@"Dave Smits"];
[self.label2 setText:@"likes the status"];
[self.label3 setText:@"We and only we can me a knew future and only we nobody else can make changes, so don't stop now !"];
[self.label1 setNumberOfLines:0];
[self.label1 sizeToFit];
CGRect frameFor2 = self.label2.frame;
frameFor2.origin.x = self.label1.frame.origin.x + 3.f; //add some space between labels
[self.label2 setFrame:frameFor2];
[self.label2 setNumberOfLines:0];
[self.label2 sizeToFit];
CGRect frameFor3 = self.label3.frame;
frameFor3.origin.x = self.label2.frame.origin.x + 3.f;
[self.label3 setFrame:frameFor3];
[self.label3 setNumberOfLines:0];
[self.label3 sizeToFit];
}
sizeToFit
метод не работает с автоматической компоновкой, вы можете посмотреть на другой ответ из SO, чтобы исправить его.