功能" 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
}
我为每个生成的gestureRecognizer
添加了UIView
with action / funct" klik_na_polozku_tabulce:"
func klik_na_polozku_tabulce(target: UIGestureRecognizer){}
在此函数中,我想要点击UIView
的编辑约束。
答案 0 :(得分:0)
将每个视图和约束的ref存储在Global Array
中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
}
}
}
只要确保您释放生成的视图的任何位置,就会在释放之前删除ViewArray
中该视图的ref以及所有Arrays的约束。