У меня есть UIView
, который я поместил в окно, используя auto layout
.Однако, когда я попытался распечатать кадр UIView
в консоли, я вернулся к нулю.Как можно определить местоположение UIView
?
Причина, по которой я хотел бы знать фрейм, заключается в том, что я хотел бы использовать следующие функции при отображении нескольких UIViews
func intersects(CGRect) -> Bool
Возвращает, пересекаются ли два прямоугольника.
func contains(CGRect) -> Bool
Возвращает, содержит ли первый прямоугольник второй прямоугольник.
var margin: UILayoutGuide!
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.white
margin = self.view.layoutMarginsGuide
let sq1 = Square.init(color: UIColor.blue)
self.view.addSubview(sq1)
sq1.translatesAutoresizingMaskIntoConstraints = false
sq1.heightAnchor.constraint(equalToConstant: 200).isActive = true
sq1.widthAnchor.constraint(equalToConstant: 200).isActive = true
sq1.topAnchor.constraint(greaterThanOrEqualTo: margin.topAnchor, constant: 20).isActive = true
sq1.centerXAnchor.constraint(equalTo: margin.centerXAnchor).isActive = true
print("sq1.frame: \(sq1.frame)")
}
class Square: UIView{
var colour: UIColor
init(color: UIColor) {
self.colour = color
super.init(frame: .zero)
self.backgroundColor = color
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
КОНСОЛЬ:
sq1.frame: (0.0, 0.0, 0.0, 0.0)