2010-12-10 44 views
10

Ich verbrachte ein paar Stunden damit, eine UIView zu positionieren und fand schließlich heraus, dass ich den Ansichtenrahmen modifizieren musste. So habe ich eine ‚setPosition‘ Methode, um die UIViewController Unterklasse wie dieseWie positioniere ich eine UIView?

- (void) setPosition:(CGPoint)position 
{ 

    CGRect newFrame = self.view.frame; 
    newFrame.origin.x = position.x; 
    newFrame.origin.y = position.y; 
    self.view.frame = newFrame; 

} 

jedoch, die so einfach scheint, dass ich verstehe nicht, warum UIViews diese Methode noch nicht haben, die ich denke, macht dies vielleicht nicht sei der richtige Weg, es zu tun. Also das ist meine Frage ...

Ist diese Methode OK oder mache ich etwas, was ich nicht tun sollte ... aus irgendeinem Grund?

Antwort

12

Kopieren, ändern und setzen Sie den Rahmen wieder wie Sie es hier getan haben ist, wie dies in der Regel getan wird. Dies kann auch durch die Schaffung eines rect erfolgen und wenn er direkt:

UIView.frame = CGRectMake(50,50,50,50);//x,y,w,h

dies tun in einer Animation Block wird diese Änderungen animieren.

Alternitively können Sie einen Blick auf Mittelpunkt mit ein:

UIView.center = CGPointMake(50,50);

+0

Wenn Sie Referenzen für IBOutlets haben, und aber ein Element platzieren möchten, das nur programmatisch erstellt werden kann, erstelle ich eine UIView (myFrame) als Rahmen und dann MyCustomView.frame = [myFrame-Grenzen] und füge hinzu MyCustomView zum Hauptansichts-Container – jay

2

Andere Art und Weise:

CGPoint position = CGPointMake(100,30); 
[self setFrame:(CGRect){.origin = position,.size = self.frame.size}]; 

Diese i Größe Parameter speichern und Herkunft nur ändern.

Verwandte Themen