2016-05-07 20 views
3

Hallo Ich bin in der Lage zu erreichen automatische Größenanpassung Tabellenansicht Zellen (basierend auf der Menge des Textes) durch pinning TextLabel oben, unten, links und rechts auf Inhaltsansicht oben, unten , links und rechts. Ich konnte eine unterschiedliche Zellenhöhe für eine Zelle mit unterschiedlicher Textlänge erhalten. Aber ich möchte dasselbe Auto-Resizing-Ergebnis erreichen, wenn die Schaltfläche als Unteransicht der Zelle hinzugefügt wird. Ich habe exakt die gleichen Contrains zum Button hinzugefügt, wie ich es mit textLabel habe. Jede Hilfe wird sehr geschätzt.Auto-Größenanpassung Tabellenansicht Zellen mit Button als Unteransicht hinzugefügt

+0

Was Sie versuchen, hinzuzufügen, auf die Schaltfläche? Mehrzeiliger Text oder irgendetwas anderes –

+0

Es wird nichts als Unteransicht über Schaltfläche hinzugefügt. Ich möchte nur Text auf Zelle zeigen. Ich möchte nur, dass meine Zelle die Größe abhängig von der Textlänge von button.titleLabel ändert. –

+0

Ich denke, Sie haben die einfachere Lösung wird nur ein Textlabel verwenden und Größe der Zelle wie Sie in Frage erklärt haben und ziehen Sie eine Taste und fügen Sie Einschränkungen relativ zu Etikett (was bedeutet, Button wird den gleichen Rahmen als Etikett) –

Antwort

0

Zusammenfassung: Here ist ein handgemachtes Beispiel zu diesem Problem.

Lesen Sie zuerst die answer über Autoresizing Tableviewcell mit UILabel, weil Sie so mit ein wenig Änderungen tun werden. Der Unterschied zwischen UILabel und UIButton ist UILabel hat Intrinsic Content-Größe basierend auf Breite und Höhe. Sie müssen also UIButton und überschreiben Methode, Unterklasse:

-(CGSize)intrinsicContentSize { 
    return CGSizeMake(self.frame.size.width, self.titleLabel.frame.size.height); 
} 

In Ihrem CustomCell Klasse überschreiben Methode

- (void)layoutSubviews{ 
    [super layoutSubviews]; //btnTest is your Button 
    [self.contentView setNeedsLayout]; 
    self.btnTest.titleLabel.preferredMaxLayoutWidth = CGRectGetWidth(self.btnTest.titleLabel.frame); 
} 

In Ihrem Viewcontroller:

- (void)configureCell:(UITableViewCell *)cell forRowAtIndexPath: (NSIndexPath *)indexPath{ 
    if ([cell isKindOfClass:[TestCell class]]) { 
     TestCell *testCell = (TestCell *)cell; 
     [testCell.btnTest setTitle:@"An example autoresizing UITableViewCell height based on UIButton added as subview by Matie.An example autoresizing UITableViewCell height based on UIButton added as subview by Matie.An example autoresizing UITableViewCell height based on UIButton added as subview by Matie." forState:UIControlStateNormal]; 
#warning You need to have this below line, to calculate height when the first time viewDidLoad. 
     testCell.btnTest.titleLabel.text = @"An example autoresizing UITableViewCell height based on UIButton added as subview by Matie.An example autoresizing UITableViewCell height based on UIButton added as subview by Matie.An example autoresizing UITableViewCell height based on UIButton added as subview by Matie."; 
    } 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    [self configureCell:self.prototypeCell forRowAtIndexPath:indexPath]; 
//  
    self.prototypeCell.bounds = CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.tableView.bounds), CGRectGetHeight(self.prototypeCell.bounds)); 
    [self.prototypeCell setNeedsLayout]; 
    [self.prototypeCell layoutIfNeeded]; 
    CGSize size = [self.prototypeCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; 
    return size.height +1; 

} 
+0

In meinem Fall kann ich keinen "CGFloat" -Wert in "heightForRowAtIndexPath" zurückgeben, da jede Zeile eindeutig ist und verschiedene Unteransichten hat. Ich habe versucht, was Sie vorgeschlagen haben und es funktioniert nicht. –

+0

Darüber hinaus Betrachten Sie ein Szenario, in dem eine einfache Ansicht UIButton als Unteransicht enthält. Ich habe oben, links, rechts und unten von UIButton zu seinem Superview gepinnt. Ich möchte, dass meine Ansicht die Größe abhängig vom Text von UIButton ändert. Selbst diese einfache Sache ist nicht erreichbar. –

+0

@JafferSheriff: Ich weiß nicht, was Sie meinen, dass Sie nicht 'CGFloat' ????? Weil Sie den Float-Wert benötigen, um die Zeilenhöhe zu bestimmen. Ja, haben Sie mein Beispiel heruntergeladen und sehen, wie sich die Zeilenhöhe anhand von Text in UIButton ändert? –

Verwandte Themen