[英]swift: how to use constraints with multiplier in code
我有一個自定義視圖,我想添加一個圖像,使其底部錨點位於視圖的3/4。 在情節提要中,我將使用第一項imgview.bottom,第二項view.bottom,常數0和乘數0.75設置約束
在代碼中,我嘗試過:
let imgview = UIImageView(image: img)
imgview.translatesAutoresizingMaskIntoConstraints = false
addSubview(imgview)
NSLayoutConstraint.activate([
imgview.widthAnchor.constraint(equalTo: widthAnchor, multiplier: 0.4),
imgview.heightAnchor.constraint(equalTo: heightAnchor, multiplier: 0.4),
imgview.centerXAnchor.constraint(equalTo: centerXAnchor),
imgview.bottomAnchor.constraint(equalToSystemSpacingBelow: bottomAnchor, multiplier: 0.75)
])
但是圖像的底部甚至低於視圖的底部。 如果我使用bottomAnchor.constraint(equalToSystemSpacingBelow: imgview.bottomAnchor, multiplier: 0.75)
它高於它,但仍然太低。 我該怎么做呢?
我會使用equalTo:,constant:完成的 。
let frameHeight = frame.height
let padding = frameHeight * 0.25
imgview.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -padding)
如果尚未加載視圖,則幀值可能返回0。
override func layoutSubviews() {
super.layoutSubviews()
if self.frame.height > 0 {
//Add constraints here
}
}
用最后一種方式對最后一種使用約束創建:
let imgview = UIImageView(image: img)
imgview.translatesAutoresizingMaskIntoConstraints = false
addSubview(imgview)
NSLayoutConstraint.activate([
imgview.widthAnchor.constraint(equalTo: widthAnchor, multiplier: 0.4),
imgview.heightAnchor.constraint(equalTo: heightAnchor, multiplier: 0.4),
imgview.centerXAnchor.constraint(equalTo: centerXAnchor),
/// imgview.bottomAnchor.constraint(equalToSystemSpacingBelow: bottomAnchor, multiplier: 0.75)
])
let constraint = NSLayoutConstraint(item: imgview, attribute: .bottom,
relatedBy: .equal,
toItem: view, attribute: .bottom,
multiplier: 0.75, constant: 0)
constraint.isActive = true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.