Falsche Größe der UITableView mit autoresizingMask
Ich habe eine UITableView, die nicht in der Größe verändert richtig mit autoresizeMask (iPhone 3.0).
Der UITableView ist in einem UIViewController innerhalb eines UINavigationController innerhalb eines UITabBarController, die alle erstellt werden, programmgesteuert. Die Statusleiste sichtbar ist.
Den code von der UIViewController ist im Grunde:
- (void)loadView {
UIView* rootView = [[UIView alloc] init];
self.view = rootView;
[rootView release];
}
- (void)viewDidLoad {
[super viewDidLoad];
//table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 480-20-49-44)];
table = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)]; table.autoresizingMask = UIViewAutoresizingFlexibleHeight;
[self.view addSubview:table];
}
Sein, wenn Sie wie dieser, der UITableView ist etwas größer als der verfügbare Platz. Wenn ich mich nicht Irre, ist es genau 44 Pixel größer, die Größe der Navigationsleiste.
Allerdings, wenn ich kommentieren Sie die auskommentierte Zeile und kommentieren Sie die nächste Zeile die Größe der UITableView ist genau richtig. Ich würde es vorziehen, zu verwenden autoresizingMask anstatt manuell die Berechnung der Größe der UITableView. Was mache ich falsch?
Vielen Dank im Voraus!
InformationsquelleAutor hpique | 2009-12-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem scheint zu sein, dass ich nicht die Einstellung der frame der root-Ansicht in loadView. Wenn Sie die Definition solcher Rahmen, und dann definieren Sie den Rahmen der Unteransichten der in Bezug auf die Rahmen, dann die autoresize-Masken richtig die Größe der Untersichten nach, wie der root-Ansicht wurde geändert durch das framework.
Beispiel:
Dank Colin Gislason, der wies mich in die richtige Richtung.
InformationsquelleAutor hpique
Den autoresizing Maske wird nicht helfen, Sie mit der Initiale Größe der Tabelle anzeigen. Die Tabelle wird erstellt und mit dem frame, den Sie ihm geben. Die autoresizing Maske definiert die Regeln für die Größe dieses Rahmens relativ zum übergeordneten Sicht, wenn die Eltern-frame-Veränderungen.
Also, wenn ich in einer Tabelle definieren, die 320x100 wird es bleiben, die Größe, wenn ich es explizit ändern oder die übergeordnete Ansicht den Rahmen für Veränderungen.
Abhängig von der Meinung anderer, Sie könnten die Berechnung auf der Grundlage der "andere Ansichten" statt, die von Eltern oder durch die Eltern-frame selbst.
Und wenn Sie nicht setzen eine autoresizing Maske aber trotzdem noch es zu 320x100, es füllt nicht den ganzen Bildschirm?
Das ist richtig. Ohne autoresizing Maske legen Sie die Tabellenansicht angepasst an den Rahmen.
Ok. Dann die UITableViewController muss auch die Größe der Tabelle. Diese Fragen stellt, Beweise und vielleicht eine Lösung: stackoverflow.com/questions/222956/...
Ich bin nicht mit einem UITableViewController. Ich bin Unterklassen von UIViewController.
InformationsquelleAutor Colin Gislason
Erstellen UIViewController-Unterklasse instand von UITableViewController Subclass.
einfügen UITableView Instanz.
in NIB einfach per drag-and-drop UIView
oben auf, dass wier vorhanden, die bestehenden UITableVIew-Objekt.
legen Sie die Größe der uitableview über Feder oder viewDidLoad-Methode.
legen Sie die Referenz -, dataSource und delegate über die nib.
nun die einfache übertragung der UIViewController-Klasse und die kann sich ändern tableview Größe, wie Sie möchten.
Hallo Claus, ich versuche es mit dynamischen Inhalten. aber es funktioniert mit statischen Inhalten...
InformationsquelleAutor damithH