2014-12-15 7 views
13

voglio centrare UIImageView (self.showImageView) in vista del contenitore (self.view)Come fare un UIImageView, centro in verticale in un contenitore con i vincoli di programmazione

ho provato sotto il codice è did't lavoro:

NSLayoutConstraint *xCenterConstraint = [NSLayoutConstraint constraintWithItem:self.showImageView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0]; 
[self.view addConstraint:xCenterConstraint]; 

NSLayoutConstraint *yCenterConstraint = [NSLayoutConstraint constraintWithItem:self.showImageView attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0]; 
[self.view addConstraint:yCenterConstraint]; 
+0

trascinare il layout per visualizzare e aggiungere "allinea verticalmente al centro del container" – Sam

+0

Per me, il modo semplice per rendere questo non è l'utilizzo del layout automatico, solo rendere questo: self.showImageView.center = self.view.center; –

risposta

22

Prova questo:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 100)]; 
    redView.backgroundColor = [UIColor redColor]; 
    redView.translatesAutoresizingMaskIntoConstraints = NO; 
    [self.view addSubview:redView]; 
    [redView addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:0 multiplier:1 constant:100]]; 
    [redView addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:0 multiplier:1 constant:200]]; 

    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1 constant:0]]; 
    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1 constant:0]]; 
    [self.view addSubview:redView]; 
} 
+2

'translatesAutoresizingMaskIntoConstraints' è stata la soluzione per me. In Swift, è 'setTranslatesAutoresizingMaskIntoConstraints' –

+0

Questo non si bloccherà con l'errore" la gerarchia della vista non è preparata per il vincolo "? Potrebbe essere necessario aggiungere i vincoli alle anteprime anziché a una vista secondaria. Secondo Apple doc: quando aggiunto a una vista, gli elementi del vincolo devono essere i discendenti di quella vista (o della vista stessa). –

+1

@PrabuArumugam questo dipende dal tipo di vincolo. Alcuni di essi (altezza/larghezza) è necessario aggiungere alla vista, non superview –

12

Prova

self.showImageView.center=self.view.center; 

Questo farà il tuo lavoro impostando self.showImageView al centro di self.view.

+0

più uno per semplicità – user3144836

Problemi correlati