Domanda

Dì che ho un progetto che assomiglia come segue:

Inserire la descrizione dell'immagine qui

Ci sono due generatori di generazioneGodes - uno chiamato UIView e l'altro chiamato yellowBox. I vincoli di layout Auto dettano che il redBox è di 60 punti dalla parte superiore della supervisione con 350 punti con spazi principali e finali (cioè a sinistra ea destra della vista). Il yellowBox ha gli stessi vincoli di spazi importanti e finali. Esiste un vincolo di spazio verticale tra le due scatole di 0 per indicare che il fondo del redBox deve essere sempre direttamente sopra il yellowBox.

Quando l'utente tocca il pulsante di box giallo espandere, vorrei che l'altezza del redBox aumenterà e, di conseguenza, il yellowBox si sposta per continuare a soddisfare il vincolo dello spazio verticale (che il redBox è sempre in cima al yellowBox). Ecco il codice animazione:

- (IBAction)expandYellowBox:(id)sender {

    [UIView animateWithDuration:0.5
                     animations:^{
                         CGRect newFrame = self.yellowBox.frame;
                         newFrame.size.height += 50;
                         self.yellowBox.frame = newFrame;
                     }];

}
.

Tuttavia, non sono stato in grado di far funzionare correttamente questo. Come puoi vedere dall'icona rossa, c'è un problema con i vincoli al momento:

Inserire l'immagine Descrizione qui

Che è abbastanza bello, poiché non c'è modo per il layout automatico di conoscere l'altezza delle scatole. Tuttavia, non so come risolvere questo problema in modo tale da consentire che le scatole vengano ridimensionate e spostate. Ad esempio, se specifico un vincolo di altezza sul redBox, quindi lo impedirà ad essere ridimensionato. Se impostare il vincolo di altezza per essere maggiore o uguale (per consentire l'aumento dell'altezza yellowBox) quindi ottengo un errore di costrizione diverso:

Inserire l'immagine Descrizione qui

Tutti i vincoli sono stati stabiliti utilizzando Xcode nello storyboard - nessuno è stato scritto nel codice.

Qualsiasi aiuto molto apprezzato.


.

Modifica: Come si scopre, il yellowBox è in crescita quando si fa clic sul pulsante - è solo che non potevo dirlo perché appare dietro il yellowBox. Ho notato solo dopo averlo fatto clic su quattro volte e ha iniziato a comparire il fondo del redBox. Tuttavia, rimane ancora la stessa domanda - come ottenere il redBox per attenersi sempre al fondo del redBox.

È stato utile?

Soluzione

Provalo come menzionato da shwet-solanki , ma aggiungi la seguente rigaDopo aver cambiato il vincolo:

[self.view layoutIfNeeded];
.

L'Ibaction sarebbe simile a

- (IBAction)expandYellowBox:(id)sender {

[UIView animateWithDuration:0.5
                 animations:^{
                     self.yellowBoxHeightConstraint.constant += 50;
                     [self.view layoutIfNeeded];
                 }];
}
.

Dove yellowBoxHeightConstraint è il IBOutlet per il vincolo di altezza di yellowBox. Spero questo sia di aiuto.

Altri suggerimenti

    .
  1. Aggiungi vincolo di altezza a entrambe le viste
  2. Crea un IBoutlet per il vincolo di altezza di YELLOWBOX
  3. Ora invece di cambiare l'altezza di YellowBox nel pulsante Pressed Event, piuttosto modificare il valore del vincolo dell'altezza.I.e Supponiamo che il tuo nome IBoutlet IBoutlet sia YellowBoxHeightConaint, allora yellowBoxHeightConstraint.constant += 50;
  4. Spero che funzioni per te.

//
//  WPViewController.h
//  AutoLayoutTEst
//
//  Created by VASANTH K on 09/01/14.
//  
//

#import <UIKit/UIKit.h>

@interface WPViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIButton *button1;
- (IBAction)buttClicked:(id)sender;
@property (strong, nonatomic) IBOutlet NSLayoutConstraint *heightConstrain;

@property (strong, nonatomic) IBOutlet UIButton *button2;
@end
.

click event

- (IBAction)buttClicked:(id)sender {


    self.heightConstrain.constant=100;


}
.

Qui è necessario impostare il heightConstrain per il pulsante Giallo per il pulsante GIALLO, quindi creare una presa di riferimento per quel pulsante, quindi aggiornare il heightConstrain per aggiornare la dimensione di quel pulsante che sposterà automaticamente il pulsante rosso.

https://github.com/vasanth3008/autolayoutheighdemo

Riferisci il mio progetto DEMO del campione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top