2013-11-07 1 views
0

Я работаю над проектом, где мне нужно выстроить линию 3 UILabels рядом друг с другом. Позвольте мне объяснить это на примере.Выровняйте три 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, заключается в том, что мне нужно установить UITapgestures на каждом UILabel.

Я работаю в обычном UITableviewCell, который использует autolayout.

Любая помощь будет оценена!

+0

Если все 3 ярлыка являются многострочными одновременно, не трудно ли их читать? Как показано ниже: Line1 - >>> Тим --- нравится --- маленький - >>> EndOfLine1 Line2 - >>> Moore --- статус --- история о медведях .- >>> EndOfLine2 –

ответ

0

Сделайте собственный макет своей ячейки и выстройте UILabels с ограничениями внутри настраиваемой ячейки. Поскольку вы находитесь в настраиваемом макете, ограничения должны делать трюк.

0

Вы можете использовать этот фрагмент кода, чтобы выстроились ваши ярлыки. Установите 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 метод не работает с автоматической компоновки, вы можете посмотреть на другой answer from SO, чтобы исправить это.

+0

От название: «каждая метка может быть многострочной». – jszumski

Смежные вопросы