正如問題所述,當我試圖在UIView類中設置一個圖像視圖,將其高度半徑除以2時,它不起作用,所以我決定打印框架的高度,它是0.幀高度打印0
該類中每個視圖的高度或寬度打印0我不知道爲什麼......在此先感謝您的答案。
正如問題所述,當我試圖在UIView類中設置一個圖像視圖,將其高度半徑除以2時,它不起作用,所以我決定打印框架的高度,它是0.幀高度打印0
該類中每個視圖的高度或寬度打印0我不知道爲什麼......在此先感謝您的答案。
我發現問題所在。當調用UI View類時,我沒有通過參數傳遞這個視圖的實際框架。因此,當這個類初始化器被執行時,框架始終是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)
}
您是否添加了self.view.addSubView(yourView)的視圖 –
@MatGrlt自從類它的UIView我只寫了addSubview(view) – Rialcom
您在哪裏實例化你的子視圖的框架? –