• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Maße einer UIView sind immer 0

  • Ersteller Ersteller Mitglied 7974
  • Erstellt am Erstellt am

Mitglied 7974

Gast
Hallo!

Ich versuche gerade, eine UIView zu programmieren, deren Größe und Positionen ihrer Subviews sich automatisch an die Größe des Eltern-UIViews anpassen. Dazu ist es notwendig, von der Eltern-UIView die Maße auszulesen.

Ich mach das also so:
Code:
CGRect parentBounds = parentViewController.view.bounds;
// Bzw.
CGRect parentFrame = parentViewController.view.frame;

Obwohl die entsprechende Eltern-UIView zu diesem Zeitpunkt bereits korrekt gerendert auf dem Bildschirm angezeigt wird, führt der beschriebene Aufruf allerdings zu Null-Maßen, also so, als ob das Ding noch gar nicht vorhanden wäre.

Nehme ich NSLog zu Hilfe, spuckt mir ein Aufruf von NSLog(@"%@", parentViewController) dann aber doch wieder die korrekten Maße aus.

Was mache ich falsch?

Danke
Matthias
 
Aktuell übergebe ich die Maße ja nicht, sondern will nur auf die Größen zugreifen, die die Views über den Interface Builder bekommen haben. Irgendwo müssen die ja gespeichert sein, denn wenn ich den parentViewController von NSLog ausgeben lasse, werden sie ja korrekterweise ausgegeben. Das Objekt kennt die Maße also. Stellt sich eben nur die Frage, warum ich sie nicht wie oben beschrieben abfragen kann.
 
Es scheint, als ob du die Masse falsch weiter verarbeitest, ob bei einer NSLog/printf Ausgabe oder beim Anpassen der Subview-Grössen.

Also einfach noch ein Wenig mehr relevanten Code posten. Dann kann man sich auch ein Bild von dem bis jetzt unscheinbaren Problem machen.

Gruss ppocket
 
Du solltest jede UIView mit UIView* view = [[UIView alloc]initWithFrame:rect] erstellen. Dann hat die View eine Nonzero-Size.
 
@Sebastato, natürlich stimmt das, aber dann erkläre mir das bitte:

Obwohl die entsprechende Eltern-UIView zu diesem Zeitpunkt bereits korrekt gerendert auf dem Bildschirm angezeigt wird, führt...

Der frame kann somit nicht NSZeroRect sein. Sonst würde ja auch nichts gezeichnet.

Gruss ppocket