2016-10-20 3 views
0

Ich habe diese Situation:Ausgabe mit Auto-Layout Einschränkungen Programmatically

enter image description here

Ich mag dies:

Die schwarze Ansicht ist bei X Abstand zwischen violett Ansicht und wenn ich I-Taste im violetten tippen Sehen Sie die Höhe der violetten Ansicht reduziert (oder erhöhen) und ich möchte, dass die schwarze Ansicht auf dem gleichen X-Abstand zwischen violetter Ansicht ist. Aus diesem Grund schreibe ich diesen Code:

Für Schaltfläche Ereignis, das nach Ansicht der violetten erhöhen oder verringern verwende ich diese Methode:

@IBAction func tapOpenButton(){ 

     self.altezza.constant = self.altezza.constant + 20 

    } 
    @IBAction func tapCloseButton(){ 

     self.altezza.constant = self.altezza.constant - 20 

    } 

wo altezza ein

Die NSLayoutConstraint ist beide Ansichten sind in einem Scrollview und ich gesetzt Einschränkung durch Code auf diese Weise:

var newView = blackView 
    var view = violetView 
     let horizontalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.centerX, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.centerX, multiplier: 1, constant: 0) 

      let verticalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.centerY, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.centerY, multiplier: 1, constant: 120) 
         let widthConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100) 
      let heightConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100) 

     self.altra.addConstraints([horizontalConstraint,verticalConstraint, widthConstraint, heightConstraint]) 

altra ist die Scrollansicht, in der beide Ansichten sind

Mein Problem ist, dass der Abstand zwischen der violetten Ansicht und der schwarzen Ansicht nicht gleich ist, wenn ich Violett Höhe zu reduzieren oder zu erhöhen, insbesondere zum Beispiel, wenn ich die Höhe der violetten Ansicht vergrößern , violette Sicht geht unter die schwarze Sicht. Ich bin neu im automatischen Layout nach Code. Können Sie mir helfen?

Antwort

0

Überprüfen Sie, ob dies in einem Ort Ihrer heightConstaint arbeitet

let heightConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100) 
0

Anstatt die Ansichten von centerY Pinning, stellen Sie den oberen Rand des schwarzen Blick auf die Unterseite des lila eine mit einem Rand.

let verticalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.bottom, multiplier: 1, constant: 10) 
Verwandte Themen