Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在生成的视图中更改约束?_Ios_Swift_Uiview - Fatal编程技术网

Ios 如何在生成的视图中更改约束?

Ios 如何在生成的视图中更改约束?,ios,swift,uiview,Ios,Swift,Uiview,功能“vypis_tabulky”将一个新的UIView添加到UIView“tabulka”中更多次。 self.vyska对于下一个UIView @IBAction func vypis_tabulky(sender: AnyObject) { let subView = UIView() subView.backgroundColor = UIColor(red: 135/255, green: 222/255, blue: 212/255, alpha:

功能“vypis_tabulky”将一个新的
UIView
添加到
UIView
“tabulka”中更多次。 self.vyska对于下一个
UIView

@IBAction func vypis_tabulky(sender: AnyObject) {

        let subView = UIView()
        subView.backgroundColor = UIColor(red: 135/255, green: 222/255, blue: 212/255, alpha: 1)
        // add subview before adding constraints
        self.tabulka.addSubview(subView)



        // essential to apply NSLayoutConstraints programatically
        subView.translatesAutoresizingMaskIntoConstraints = false

        // trailing margin constraint
        let const1 = NSLayoutConstraint(item: subView, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 120)
        // top constraint
        let const2 = NSLayoutConstraint(item: subView, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem:self.tabulka, attribute: NSLayoutAttribute.Top, multiplier: 1, constant: self.vyska)
        // bottom constraint
        let const3 = NSLayoutConstraint(item: subView, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem:nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 120)
        // leading margin constraint
        let const4 = NSLayoutConstraint(item: subView, attribute: NSLayoutAttribute.LeadingMargin, relatedBy: NSLayoutRelation.Equal, toItem:self.tabulka, attribute: NSLayoutAttribute.LeadingMargin, multiplier: 1, constant: 20)
            const2.identifier = "ahoj"

        let klik = UITapGestureRecognizer(target: self, action: "klik_na_polozku_tabulce:")
        subView.addGestureRecognizer(klik)

        subView.tag = self.tag_view

        self.tag_view++
        NSLayoutConstraint.activateConstraints([const1, const2, const3, const4])
     self.vyska = 100+self.vyska
    }
我使用动作/功能“klik_na_polozku_tabulce:”


在这个函数中,我需要编辑我单击的
UIView
的约束。

将每个视图和约束的引用存储在全局数组中

var ViewArray: [UIView] = [UIView]()
var ConstWidthArray: [NSLayoutConstraint] = [NSLayoutConstraint]()
var ConstTopArray: [NSLayoutConstraint] = [NSLayoutConstraint]()
var ConstHeightArray: [NSLayoutConstraint] = [NSLayoutConstraint]()
var ConstLeadingMarginArray: [NSLayoutConstraint] = [NSLayoutConstraint]()
在创建它们时,将它们添加到这些数组中

@IBAction func vypis_tabulky(sender: AnyObject) {

    let subView = UIView()
    subView.backgroundColor = UIColor(red: 135/255, green: 222/255, blue: 212/255, alpha: 1)
    // add subview before adding constraints
    self.tabulka.addSubview(subView)

    // ADD-------------------------
    ViewArray.append(subView)


    // essential to apply NSLayoutConstraints programatically
    subView.translatesAutoresizingMaskIntoConstraints = false

    // trailing margin constraint
    let const1 = NSLayoutConstraint(item: subView, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 120)
    // top constraint
    let const2 = NSLayoutConstraint(item: subView, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem:self.tabulka, attribute: NSLayoutAttribute.Top, multiplier: 1, constant: self.vyska)
    // bottom constraint
    let const3 = NSLayoutConstraint(item: subView, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem:nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 120)
    // leading margin constraint
    let const4 = NSLayoutConstraint(item: subView, attribute: NSLayoutAttribute.LeadingMargin, relatedBy: NSLayoutRelation.Equal, toItem:self.tabulka, attribute: NSLayoutAttribute.LeadingMargin, multiplier: 1, constant: 20)
        const2.identifier = "ahoj"

    ConstWidthArray.append(const1)
    ConstTopArray.append(const2)
    ConstHeightArray.append(const3)
    ConstLeadingMarginArray.append(const4)

    let klik = UITapGestureRecognizer(target: self, action: "klik_na_polozku_tabulce:")
    subView.addGestureRecognizer(klik)

    subView.tag = self.tag_view

    self.tag_view++
    NSLayoutConstraint.activateConstraints([const1, const2, const3, const4])
 self.vyska = 100+self.vyska
}
触发手势时,它会将其视图与
ViewArray
中的视图进行比较,然后调整约束

func klik_na_polozku_tabulce(target: UIGestureRecognizer){
    let viewKliked: UIView = target.view
    for index in 0..<ViewArray.count {
        if viewKliked === ViewArray[index] {
            //adjust constraints
            ConstWidthArray[index].constant = 99
            ConstTopArray[index].constant = 99
            ConstHeightArray[index].constant = 99
            ConstLeadinMarginArray[index].constant = 99
        }
    }
}
func klik_na_polozku_tabulce(目标:UIgestureRecognitor){
让viewKliked:UIView=target.view

对于0中的索引。为什么不为约束设置出口,以便在任何时候都可以编辑它们。如果没有任何效果,请使用砌体来设置和编辑约束,因为每个生成的UIview都需要唯一的约束
func klik_na_polozku_tabulce(target: UIGestureRecognizer){
    let viewKliked: UIView = target.view
    for index in 0..<ViewArray.count {
        if viewKliked === ViewArray[index] {
            //adjust constraints
            ConstWidthArray[index].constant = 99
            ConstTopArray[index].constant = 99
            ConstHeightArray[index].constant = 99
            ConstLeadinMarginArray[index].constant = 99
        }
    }
}