2015-10-05 21 views
0

函数“vypis_tabulky”添加新的UIViewUIView“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 
    } 

越大我添加gestureRecognizer,每产生UIView用行动/本功能“klik_na_polozku_tabulce:”

func klik_na_polozku_tabulce(target: UIGestureRecognizer){} 

而这个函数内的UIView一个想要编辑的限制我点击了。

+0

为什么你没有网点的约束,所以你可以编辑它们,只要你可以。如果什么都行不通,请使用砌体来设置和编辑约束条件 –

+0

,因为每个生成的UIview都需要唯一的约束条件 – hujukulu

回答

0
在全局阵列中的每个视图和约束的

商店裁判

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 
     } 
    } 
} 

只要确保你的dealloc生成视图的任何地方,你所有的数组中删除该视图裁判在ViewArray和它的约束,以及重新分配发生之前。

+0

我爱你Dustin O :) – hujukulu