简体   繁体   中英

Issue using Auto Layout Constraints Programmatically

I have this situation:

在此处输入图片说明

I want this:

The black view is at X distance between violet view and if I tap I button in the violet view the violet view's height reduces(or increase) and I want that the black view is at the same X distance between violet view. For this reason I write this code:

For button event that increase or reduce the violet's view I use this method:

@IBAction func tapOpenButton(){

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

    }
    @IBAction func tapCloseButton(){

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

    }

where altezza is a NSLayoutConstraint

The both views are in a scrollview and I set constraint by code in this way:

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 is the scrollview where both views are

My problem is that the distance between the violet view and black view is not the same when I reduce or increase violet's height , in particular , for example , when I increase the violet view's height , violet view goes under the black view. I'm new in auto layout by code. Can you help me?

检查这是否可以代替您的身高

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

不用通过centerY固定视图, centerY将黑色视图的顶部设置为带有边缘的紫色视图的底部。

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM