UITextView, sizeToFit действует странно
Я пытаюсь создать простое приложение чата для практики. Я использую UITableView для настройки своего чата, и я настроил свою ячейку из раскадровки. Я поместил простой UITextView в качестве контейнера сообщений, однако по какой-то странной причине размеры, которые я получаю, странные и не имеют смысла. вот код для ячейки:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
ChatroomTableViewCell *cell = (ChatroomTableViewCell *)[self.tableView dequeueReusableCellWithIdentifier:@"MessageCell" forIndexPath:indexPath];
Message *cellMessage = [self.messages objectAtIndex:indexPath.row];
cell.userNameLabel.text = cellMessage.userName;
cell.messageLabel.text = cellMessage.messageText;
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm a"];
[cell.messageLabel.layer setCornerRadius:2.0f];
if (cellMessage.messageType == SENT_MESSAGE) {
NSString *dateLabelString = [NSString stringWithFormat:@"Sent: %@", [formatter stringFromDate:cellMessage.relevantDate]];
cell.relevantDateLabel.text = dateLabelString;
cell.userNameLabel.textAlignment = NSTextAlignmentRight;
cell.relevantDateLabel.textAlignment = NSTextAlignmentRight;
[cell.messageLabel setBackgroundColor:self.currentTheme.sentMessageColor];
[cell.messageLabel.layer setBorderColor:self.currentTheme.sentMessageColor.CGColor];
[cell.messageLabel setTextAlignment:NSTextAlignmentRight];
[cell.messageLabel sizeToFit];
[cell.messageLabel setFrame:CGRectMake(self.view.frame.size.width - 20 - cell.messageLabel.frame.size.width - 10, cell.messageLabel.frame.origin.y, cell.messageLabel.frame.size.width + 10, cell.messageLabel.frame.size.height + 5)];
} else {
NSString *dateLabelString = [NSString stringWithFormat:@"Received: %@", [formatter stringFromDate:cellMessage.relevantDate]];
cell.relevantDateLabel.text = dateLabelString;
cell.userNameLabel.textAlignment = NSTextAlignmentLeft;
cell.relevantDateLabel.textAlignment = NSTextAlignmentLeft;
if (cellMessage.messageType == EVENT_MESSAGE) {
[cell.messageLabel setBackgroundColor:self.currentTheme.eventMessageColor];
} else {
[cell.messageLabel setBackgroundColor:self.currentTheme.receivedMessageColor];
}
[cell.messageLabel sizeToFit];
}
return cell;
}
Вот результат, который я получаю:Кто-нибудь знаком с этой проблемой? Кто-нибудь знает причину?
РЕДАКТИРОВАТЬ: Я пытался использовать UILabel, и все работало нормально, но UILabel не обладает необходимой мне функциональностью.
1 ответ
Проблема в том, что sizeToFit
не делает для UITextView то, что вы хотите сделать. Вы можете создать UITextView, размер которого соответствует его содержимому, но это не так.
Выполните поиск по переполнению стека, вы найдете много информации. Например: как мне определить размер UITextView для его содержимого?