To powinno pomóc :)
NSString *str=self.strQuestionTitle;
CGRect rect=CGRectMake(51, 16, 257, 0);
CGSize size=[str sizeWithFont:self.lblQuestion.font constrainedToSize:CGSizeMake(257, 3000) lineBreakMode:self.lblQuestion.lineBreakMode];
int lines=(size.height/self.lblQuestion.font.pointSize);
self.lblQuestion.numberOfLines=lines;
rect.size=size;
if(lines>2)
{
if(lines==3 &&[str length]>66)
{
str=[str substringToIndex:66];
str=[str stringByAppendingString:@"...Read More"];
size=[str sizeWithFont:self.lblQuestion.font constrainedToSize:CGSizeMake(257, 67) lineBreakMode:self.lblQuestion.lineBreakMode];
int lines=(size.height/self.lblQuestion.font.pointSize);
self.lblQuestion.numberOfLines=lines;
rect.size=CGSizeMake(257, 67);
}
else if(lines>3)
{
str=[str stringByAppendingString:@"...Read More"];
size=[str sizeWithFont:self.lblQuestion.font constrainedToSize:CGSizeMake(257, 67) lineBreakMode:self.lblQuestion.lineBreakMode
];
int lines=(size.height/self.lblQuestion.font.pointSize);
self.lblQuestion.numberOfLines=lines;
rect.size=CGSizeMake(257, 67);
}
//self.lblQuestion.lineBreakMode=NSLineBreakByTruncatingHead;
}
sobie wyobrazić, że po prostu ma limit znaków w tekście podglądu. Jeśli tekst przekroczy ten limit, odcina go i dodaje "... Kontynuuj czytanie". Jeśli chcesz uniknąć odcięcia słowa, po prostu szukaj ostatniego wystąpienia spacji (spacji) przed limitem znaków. –
@ParisNelson Używam tego, aby uzyskać ciąg tekstowy o ograniczonej długości tekstu. Więc zrób to, co powiedziałeś. Czy to ma sens? –
@ParisNelson Spróbuj opisać rzeczywiste rozwiązanie, a nie tylko opis wysokiego poziomu tego, co widzisz. Nie ma "limitu znaków" na UILabel, ani nie automagicznie dodać klikalny tekst z ładnym stylu, który mówi "Kontynuuj czytanie". –