У меня есть несколько динамически сгенерированных представлений, помещенных в UIStackView
.Я хотел бы нажать на любой красный вид и оживить его до 200 с помощью ограничения привязки ширины.Динамическое создание и размещение представлений в пределах UIStackview
очень важно.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var arrangedSubviews = [AnyObject]()
for _ in 0...5 {
let redView = UIView()
redView.backgroundColor = .red
redView.translatesAutoresizingMaskIntoConstraints = false
redView.widthAnchor.constraint(equalToConstant: 50).isActive = true
redView.layer.borderWidth = 1
redView.layer.borderColor = UIColor.white.cgColor
arrangedSubviews.append(redView)
}
let stackView = UIStackView(arrangedSubviews: arrangedSubviews as! [UIView])
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.heightAnchor.constraint(equalToConstant: view.frame.height).isActive = true
view.addSubview(stackView)
view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTap)))
}
@objc func handleTap(gesture: UITapGestureRecognizer){
let location = gesture.location(in: view)
print(location)
for firstViews in view.subviews {
for secondViews in firstViews.subviews {
if secondViews.frame.contains(location){
secondViews.widthAnchor.constraint(equalToConstant: 200)
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
self.view.layoutIfNeeded()
}, completion: nil)
}
}
}
}
}