Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import UIKit
- class Test: UIView {
- var vStackView: UIStackView = {
- let sV = UIStackView()
- sV.axis = .vertical
- sV.translatesAutoresizingMaskIntoConstraints = false
- sV.alignment = .center
- sV.distribution = .fillEqually
- return sV
- }()
- var rStackViews: [UIStackView] = (1...4).map { _ in UIStackView() }
- var views: [UIView] = (1...16).map { _ in UIView() }
- required init?(coder aDecoder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- init() {
- super.init(frame: .zero)
- self.translatesAutoresizingMaskIntoConstraints = false
- for r in rStackViews {
- r.axis = .horizontal
- r.translatesAutoresizingMaskIntoConstraints = false
- r.alignment = .center
- r.distribution = .fillEqually
- vStackView.addArrangedSubview(r)
- }
- rStackViews.forEach({
- $0.widthAnchor.constraint(equalTo:vStackView.widthAnchor).isActive = true
- })
- for (i, v) in views.enumerated() {
- v.backgroundColor = .darkGray
- v.translatesAutoresizingMaskIntoConstraints = false
- v.heightAnchor.constraint(equalToConstant: 100).isActive = true
- v.widthAnchor.constraint(equalToConstant: 100).isActive = true
- v.layer.borderColor = UIColor.green.cgColor
- v.layer.borderWidth = 1
- rStackViews[i/4].addArrangedSubview(v)
- }
- self.addSubview(vStackView)
- let panGesture = UIPanGestureRecognizer(target: self, action: #selector(panDetected))
- self.gestureRecognizers = [panGesture]
- // debug
- self.layer.borderColor = UIColor.red.cgColor
- self.layer.borderWidth = 1
- }
- @objc func panDetected(_ recoginzer: UIPanGestureRecognizer) {
- let transl = recoginzer.translation(in: self.superview)
- for v in views {
- if v.point(inside: transl.self, with: nil) {
- v.backgroundColor = .red
- } else {
- v.backgroundColor = .darkGray
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement