[FIXED] Object Placement-iPad von Objective-C

Ausgabe

Ich habe eine GUI-Klasse, die UIViewController erweitert.

In seiner Funktion viewDidLoadmöchte ich eine UITextFieldInstanz haben. Ich möchte, dass diese Instanz nicht als einfaches CGRect ausgerichtet wird und ihren Versatz und ihre Breite und Höhe festlegt, sondern dass sie dynamisch in der Größe geändert wird, sodass sie die gesamte Breite des Bildschirms ausfüllt, mit einem Versatz von 5 Pixeln von oben, links und jeweils rechts und einer Höhe von 20px. Wie wird das gemacht?

Es sollte die “relativ-absolute” Positionierung unabhängig von der Ausrichtung des Geräts beibehalten, wobei alle Ausrichtungen unterstützt werden.

Vielleicht gibt es so etwas wie einen LayoutManager, wie zum Beispiel GridBagLayout in Java?

Lösung

Sie möchten die autoresizingMaskEigenschaft der Ansicht festlegen.

UIView *theParentView; // Assume this is the root view that owns the whole screen

CGRect textFieldFrame = CGRectMake(5, // Top-left corner x position
                                   5, // Top-left corner y position
                                   [theParentView bounds].width - 10, // Width
                                   20); // Height

UIView *myView = [[UIView alloc] initWithFrame:textFieldFrame];

// This will make it resize with the parent view, maintaining margins
[myView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];

[theParentView addSubview:myView];

[myView release];

Dies kann alles auch über Interface Builder erfolgen. Es gibt sogar eine kleine Animation, die zeigt, wie die Ansicht in Interface Builder skaliert wird.


Beantwortet von –
BJ Homer


Antwort geprüft von –
Senaida (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like