2015-11-28 24 views
5

Sto cercando di cambiare un vincolo per un ImageView per iPhone 4S, 5,5S in viewDidLoad:iOS 8 - Trovare vincoli per un UIView con identificatore

for (NSLayoutConstraint *constraint in logoImage.constraints) { 
    if ([constraint.identifier isEqualToString:@"logoTopIdentifier"]) { 
     constraint.constant=10; 
    } 
} 

Sembra che non è nemmeno l'iterazione nel loop . C'è un altro modo per ottenere un vincolo specifico con l'identificatore?

+0

se si aggiunge il vincolo nello storyboard, è possibile trascinarlo direttamente nella classe – Surely

+0

Cosa intendi? – BlackM

+2

sai come collegare un Uibutton nello storyboard alla tua classe viewcontroller? Puoi farlo allo stesso modo per connettere il vincolo alla tua classe viewcontroller. – Surely

risposta

4

È possibile collegare il vincolo nello storyboard alla classe del controller di visualizzazione come se fosse un elemento dell'interfaccia utente.

Basta trovare i vincoli nello storyboard, trasformare lo spazio di lavoro in una vista divisa e trascinare il vincolo sulla classe corrispondente del controller di visualizzazione.

A volte se si desidera animare il cambiamento di posizione, è possibile aggiornare il vincolo del tipo:

self.theConstraint?.constant = 100 
self.view.setNeedsUpdateConstraints() 
UIView.animateWithDuration(0.7) {() -> Void in 
    self.view.layoutIfNeeded() 
} 

blocco.

Questo è tutto.

1

Questa è la libreria KVConstraintExtensionsMaster tramite cui è possibile accedere a qualsiasi costante da view in base allo NSLayoutAttribute. Indipendentemente dal fatto che il vincolo sia stato aggiunto Programmatically o da Interface Builder.

[self.logoImage accessAppliedConstraintByAttribute:NSLayoutAttributeTop completion:^(NSLayoutConstraint *expectedConstraint){ 
     if (expectedConstraint) { 
      expectedConstraint.constant = 10; 

      /* for the animation */ 
      [self.logoImage updateModifyConstraintsWithAnimation:NULL]; 
     } 
    }];