Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. import UIKit
  2.  
  3. class Test: UIView {
  4.  
  5. var vStackView: UIStackView = {
  6. let sV = UIStackView()
  7. sV.axis = .vertical
  8. sV.translatesAutoresizingMaskIntoConstraints = false
  9. sV.alignment = .center
  10. sV.distribution = .fillEqually
  11. return sV
  12. }()
  13.  
  14. var rStackViews: [UIStackView] = (1...4).map { _ in UIStackView() }
  15.  
  16. var views: [UIView] = (1...16).map { _ in UIView() }
  17.  
  18. required init?(coder aDecoder: NSCoder) {
  19. fatalError("init(coder:) has not been implemented")
  20. }
  21.  
  22. init() {
  23.  
  24. super.init(frame: .zero)
  25.  
  26. self.translatesAutoresizingMaskIntoConstraints = false
  27.  
  28. for r in rStackViews {
  29. r.axis = .horizontal
  30. r.translatesAutoresizingMaskIntoConstraints = false
  31. r.alignment = .center
  32. r.distribution = .fillEqually
  33. vStackView.addArrangedSubview(r)
  34. }
  35.  
  36. rStackViews.forEach({
  37. $0.widthAnchor.constraint(equalTo:vStackView.widthAnchor).isActive = true
  38. })
  39.  
  40. for (i, v) in views.enumerated() {
  41. v.backgroundColor = .darkGray
  42. v.translatesAutoresizingMaskIntoConstraints = false
  43. v.heightAnchor.constraint(equalToConstant: 100).isActive = true
  44. v.widthAnchor.constraint(equalToConstant: 100).isActive = true
  45. v.layer.borderColor = UIColor.green.cgColor
  46. v.layer.borderWidth = 1
  47. rStackViews[i/4].addArrangedSubview(v)
  48. }
  49.  
  50.  
  51.  
  52. self.addSubview(vStackView)
  53.  
  54. let panGesture = UIPanGestureRecognizer(target: self, action: #selector(panDetected))
  55. self.gestureRecognizers = [panGesture]
  56.  
  57. // debug
  58. self.layer.borderColor = UIColor.red.cgColor
  59. self.layer.borderWidth = 1
  60.  
  61. }
  62.  
  63. @objc func panDetected(_ recoginzer: UIPanGestureRecognizer) {
  64. let transl = recoginzer.translation(in: self.superview)
  65.  
  66. for v in views {
  67. if v.point(inside: transl.self, with: nil) {
  68. v.backgroundColor = .red
  69. } else {
  70. v.backgroundColor = .darkGray
  71. }
  72. }
  73. }
  74.  
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement