2016-07-31 30 views
0

Ich bin neu in IOS-Entwicklung, also, wenn ich die Breite eines UITextFeilings dynamisch ändere, möchte ich den Knopf unten verschieben. Ich habe versucht, die Einschränkungen zu verwenden, aber es scheint nicht dynamisch zu verschieben.Ändern Sie die Position dynamisch

(IBAction)selectStatus:(id)sender { 
    CGRect frameRect = _textViewDevices.frame; 
    frameRect.size.height = 10; 
    self.textViewDevices.frame = frameRect; 

ein gutes Beispiel, wie man das erreicht?

Ich möchte etwas wie die Relative Positionierung in Android erreichen.

current box before any action on action the box size change

+1

Bitte teilen Sie einige Bilder, wie es sein sollte und es ist stattdessen – ddb

+0

Verwenden Sie Auto Layout? –

+0

@ ViktorSimkó ja –

Antwort

0

Programmatically, wenn die ersten violetten Feldänderungen in der Höhe, alle unten Blick auf sie bleiben neben machen, sollten Sie die frame.origin.y richtig aktualisieren.

zum Beispiel der Status Etikett sollte So, wie diese

CGRect frame = statusLabel.frame; 
frame.origin.y = firstField.origin.y + firstField.size.height + 5; 
statusLabel.frame = frame; 

Und das gleiche gilt für alle unter Ansichten (ich habe angeblich 5 Pixel Abstand zwischen den Ansichten)

2

Versuchen layoutIfNeeded Aufruf reframed nach den Änderungen:

- (IBAction)selectStatus:(id)sender { 
    CGRect frameRect = _textViewDevices.frame; 
    frameRect.size.height = 10; 
    self.textViewDevices.frame = frameRect; 
    [self.view layoutIfNeeded]; 
} 

Wenn Sie eine Höhe Beschränkung der Textansicht, versuchen seine konstant zu setzen, anstatt die Rahmenhöhe einstellen:

- (IBAction)selectStatus:(id)sender { 
    self.textViewHeightConstraint.constant = 10; 
    [self.view layoutIfNeeded]; 
}