正如问题所述,当我尝试在UIView类中设置图像视图时,要使其框架高度的角半径除以2,它不起作用,所以我决定打印框架高度它是0.
此课程中每个视图的高度或宽度打印0我不知道为什么...提前感谢您的答案。
答案 0 :(得分:0)
默认情况下,视图没有任何大小。您必须设置某种约束或视图的框架。
<强> 1。约束强>
在viewDidLoad()
中设置约束时,视图不会立即获得大小。为了读取大小,您必须在另一个名为viewDidLayoutSubviews()
的函数中读取它。在布置所有视图后调用此函数。以下是视图将获得其父视图大小的示例:
var newView:UIView?
override func viewDidLoad() {
super.viewDidLoad()
newView = UIView()
newView!.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(newView!)
newView!.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
newView!.rightAnchor.constraint(equalTo: self.view.rightAnchor).isActive = true
newView!.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
newView!.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
}
override func viewDidLayoutSubviews() {
print(newView!.frame)
}
<强> 2。框架:通过直接设置视图框架,您可以立即读取其大小。下面是一个示例,其中视图的框架设置为与其父视图相同的边界:
var newView:UIView?
override func viewDidLoad() {
super.viewDidLoad()
newView = UIView()
newView?.frame = view.bounds
newView!.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(newView!)
print(newView!.frame)
}
答案 1 :(得分:0)
我发现了问题。在调用UI View类时,我没有通过参数传递此视图的实际帧。因此,当执行此类初始值设定项时,帧始终为0.