我有一個 UIStackView 的子類
final class MyStack : UIStackView {
required init(coder: NSCoder) {
super.init(coder: coder)
setup()
}
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
private func setup() {
backgroundColor = .clear
axis = .horizontal
contentMode = .scaleAspectFit
alignment = .fill
distribution = .fillProportionally
spacing = 0
contentMode = .scaleToFill
isUserInteractionEnabled = true
autoresizingMask = [.flexibleLeftMargin, .flexibleRightMargin, .flexibleTopMargin, .flexibleBottomMargin, .flexibleWidth, .flexibleHeight]
translatesAutoresizingMaskIntoConstraints = true
}
func setupSymbols(_ amount:Int) {
let large = UIImage.SymbolConfiguration(scale: .large)
for index in 0..< number {
let image = UIImage(systemName: "trash", withConfiguration: large)
let highlightedImage = UIImage(systemName: "trash.fill", withConfiguration: large)
let imageView = UIImageView(image: image, highlightedImage: highlightedImage)
self.addArrangedSubview(oneStar)
}
}
在ViewController我創建這個類的一個實體
let myStack = MyStack()
myStack.setupSymbols(5)
self.view.addSubview(myStack)
print (myStack.frame)
最后一行給我寬度和高度等于零!!!
為什么?
uj5u.com熱心網友回復:
在下一次布局傳遞之前,視圖的框架不會更新。將視圖添加到視圖層次結構后,不會立即計算框架,這就是您看到它為零的原因。
如果您覆寫視圖控制器的viewDidLayoutSubviews方法并檢查那里的框架,它可能是非零的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/476063.html
標籤:IOS uikit uistackview
