|
|
|
import UIKit |
|
import PlaygroundSupport |
|
|
|
class MyView: UIView { |
|
|
|
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool { |
|
var f = bounds |
|
f.origin.y -= 20 |
|
return f.contains(point) |
|
} |
|
|
|
} |
|
|
|
class TestViewController : UIViewController { |
|
|
|
let redButton: UIButton = { |
|
let b = UIButton() |
|
b.translatesAutoresizingMaskIntoConstraints = false |
|
b.setTitle("Tap Me", for: .normal) |
|
b.backgroundColor = .red |
|
return b |
|
}() |
|
|
|
let testMyView: MyView = { |
|
let v = MyView() |
|
v.translatesAutoresizingMaskIntoConstraints = false |
|
v.backgroundColor = .orange |
|
return v |
|
}() |
|
|
|
let blueButton: UIButton = { |
|
let b = UIButton() |
|
b.translatesAutoresizingMaskIntoConstraints = false |
|
b.setTitle("Tap Me", for: .normal) |
|
b.backgroundColor = .blue |
|
return b |
|
}() |
|
|
|
let normalView: UIView = { |
|
let v = UIView() |
|
v.translatesAutoresizingMaskIntoConstraints = false |
|
v.backgroundColor = .green |
|
return v |
|
}() |
|
|
|
override func viewDidLoad() { |
|
super.viewDidLoad() |
|
|
|
view.addSubview(normalView) |
|
|
|
normalView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true |
|
normalView.topAnchor.constraint(equalTo: view.topAnchor, constant: 80.0).isActive = true |
|
normalView.widthAnchor.constraint(equalToConstant: 300).isActive = true |
|
normalView.heightAnchor.constraint(equalToConstant: 200).isActive = true |
|
|
|
normalView.addSubview(redButton) |
|
|
|
redButton.addTarget(self, action: #selector(redTap(_:)), for: .touchUpInside) |
|
|
|
redButton.centerXAnchor.constraint(equalTo: normalView.centerXAnchor).isActive = true |
|
redButton.topAnchor.constraint(equalTo: normalView.topAnchor, constant: -20.0).isActive = true |
|
|
|
|
|
view.addSubview(testMyView) |
|
|
|
testMyView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true |
|
testMyView.topAnchor.constraint(equalTo: normalView.bottomAnchor, constant: 80.0).isActive = true |
|
testMyView.widthAnchor.constraint(equalToConstant: 300).isActive = true |
|
testMyView.heightAnchor.constraint(equalToConstant: 200).isActive = true |
|
|
|
testMyView.addSubview(blueButton) |
|
|
|
blueButton.addTarget(self, action: #selector(blueTap(_:)), for: .touchUpInside) |
|
|
|
blueButton.centerXAnchor.constraint(equalTo: testMyView.centerXAnchor).isActive = true |
|
blueButton.topAnchor.constraint(equalTo: testMyView.topAnchor, constant: -20.0).isActive = true |
|
|
|
|
|
|
|
|
|
} |
|
|
|
func redTap(_ sender: Any?) -> Void { |
|
print("Red Tapped!") |
|
} |
|
|
|
func blueTap(_ sender: Any?) -> Void { |
|
print("Blue Tapped!") |
|
} |
|
|
|
} |
|
|
|
|
|
let vc = TestViewController() |
|
vc.view.backgroundColor = .white |
|
PlaygroundPage.current.liveView = vc |
|
|
|
|