Ich habe eine UITableview
mit mehreren wiederverwendbaren TableViewCells. In einer Zelle habe ich eine UITextView
, die sich an ihren Inhalt anpasst. Jetzt muss ich "nur" die Größe contentView
der TableViewCell ändern, damit ich den while-Text lesen kann. Ich habe bereits versucht:Wie wird die Größe von UITableViewCell an den Inhalt angepasst?
cell2.contentView.bounds.size.height = cell2.discriptionTextView.bounds.size.height;
Oder:
cell2.contentView.frame = CGRectMake(0, cell2.discriptionTextView.bounds.origin.y,
cell2.discriptionTextView.bounds.size.width,
cell2.discriptionTextView.bounds.size.height);
Bei dem Verfahren:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath {}
Aber es wird nicht funktionieren.
Weiß jemand, wie man das macht?
Neuer Code:
@implementation AppDetail
CGFloat height;
…
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{…
cell2.TextView.text = self.text;
[cell2.TextView sizeToFit];
height = CGRectGetHeight(cell2.TextView.bounds);
…
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 0) {
return 143;
}
if (indexPath.row == 1) {
return height;
}
return 0;
}
OK, ich habe jetzt Ihren Code hinzugefügt, und es funktioniert, aber nur das zweite Mal, wenn Sie den UIViewController anzeigen. Ich habe einen CGFloat erstellt und dann die Höhe des UITextView dem CGFloat zugewiesen. Dann gebe ich das erstellte CGFloat in der oben beschriebenen Methode zurück. Ich werde meinen neuen Code oben veröffentlichen. –
erste Sache, die Sie wissen sollten ist, dass Sie Höhe nicht gesetzt haben für die Zelle in ‚cellForRowAtIndexPath‘ Es sollte in ‚heightForRowAtIndexPath‘ zweite Sache geschehen ist, dass ‚heightForRowAtIndexPath‘ vor ‚cellForRowAtIndexPath‘ genannt wird. Das bedeutet, dass Sie die Höhe für eine Zelle berechnen müssen, bevor Sie dieselbe Zelle auffüllen (Die Tabelle sollte über die Höhe informiert werden, bevor Sie die Zelle auffüllen – dRAGONAIR
Hinweis: Alle 'UILineBreakMode *' sind veraltet, ersetzt durch 'NSLineBreakBy *' though. – Raptor