Ios 如何在生成的视图中更改约束?
功能“vypis_tabulky”将一个新的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:
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
}
}
}