Größenänderung UITableViewCell Inhalt Breite automatisch
Ich habe einige code, der erstellt eine Tabellenzelle mit einem Schieberegler. Es ist ziemlich einfach, und die Größe gut auf dem iPhone. Ich habe anonymisiert es hier ein bisschen:
UITableViewCell* cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Foo"] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
CGRect contentViewFrame = cell.contentView.frame;
CGRect sliderFrame = CGRectMake(10, 0, 280, contentViewFrame.size.height);
UISlider* slider = [[UISlider alloc] initWithFrame:sliderFrame];
UIImage* minimumImage = [UIImage imageNamed:@"min.png"];
UIImage* maximumImage = [UIImage imageNamed:@"max.png"];
slider.minimumValueImage = minimumImage;
slider.maximumValueImage = maximumImage;
slider.value = 0.5f;
[slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
[cell.contentView addSubview:slider];
[slider release];
Dies ist natürlich falsch bemessen für das iPad. Also mein Erster Gedanke war, die autoresizingMask
Eigenschaft UIViewAutoresizingFlexibleWidth
. Problem gelöst, richtig? NÖ. Nun auf dem iPhone die Breite der Schieber-plus-images-Inhalte weniger als 280 und, damit es nicht gleich gehen zu Ende-es endet bis etwa 20 Pixel kurz.
Auf dem iPad, die gleiche Sache-die Breite der UISlider
passt automatisch die Größe von etwa 20 Pixel kurz von dem Ende der Zelle.
Vielleicht die auto-resize-flag ist, die Aufmerksamkeit auf die nicht-existente accessoryView
von der Zelle? Ich habe versucht, es zu nil
explizit, aber ich denke, es ist nil
standardmäßig, also nichts geändert.
Möchte ich dieser Zelle den Inhalt auf die Größe automatisch auf die "volle" Breite der Zelle, unabhängig von Gerät und Orientierung. Gibt es eine einfache Möglichkeit, dies zu tun?
InformationsquelleAutor der Frage Shaggy Frog | 2010-07-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es funktioniert genau wie du beschrieben hast. Ich bin geneigt zu denken, es ist iOS bug. Auf dem iPAD, wenn Sie neue UITableViewCell seine Breite set für 320. hardcoded(!) beide anzeigen und contentView. Es nicht in der korrekten Größe angezeigt, wenn set zu
UIViewAutoresizingFlexibleWidth
. Ich hatte es eingestellt, um anzuzeigen.frame.Größe.width/2, mit lustigen Ergebnissen: auf dem iPhone sind es 160, auf dem iPad ist es 608!!!Landete ich das manuelle anpassen der Größe, die meine Zellen und deren Inhalt.
InformationsquelleAutor der Antwort bioffe
Bisschen spät aber ich fand die Lösung von heute die gleiche Frage, aber Sie müssen zum erstellen einer custom UITableViewCell.
Dann können Sie überschreiben die Funktion
In dieser Funktion selbst.frame.Größe.die Breite ist die tatsächliche ein.
Und es funktioniert mit einer rotation des Geräts zu.
InformationsquelleAutor der Antwort Seega
Sollten Sie in der Lage sein zu sagen, die Größenänderung system "klebt" das Objekt einen festen Abstand vom rechten Rand (wo es keine Größenänderung weit genug). Wenn Sie Experimentieren mit IB können Sie eine Ansicht erstellen, die die Größe in der Breite und ist fest auf der rechten Seite.
Haben Sie UIViewAutoresizingFlexibleRightMargin gesetzt?
InformationsquelleAutor der Antwort Kendall Helmstetter Gelner
Setzen Ihre Zelle
contentMode
zuUIViewContentModeRedraw
.InformationsquelleAutor der Antwort Steven Fisher