Ios Swift:尽管添加了元素,但视图高度始终为0
我有这个堆栈视图,它包含一个ImageView:Ios Swift:尽管添加了元素,但视图高度始终为0,ios,swift,uiimageview,tvos,uistackview,Ios,Swift,Uiimageview,Tvos,Uistackview,我有这个堆栈视图,它包含一个ImageView: 如果我打印它的高度,我总是得到0: print("movieDetailsStackView!.bounds.height: ",movieDetailsStackView!.bounds.height ) // 0 print("movieDetailsStackView!.frame.height: ",movieDetailsStackView!.frame.height ) // 0
如果我打印它的高度,我总是得到0:
print("movieDetailsStackView!.bounds.height: ",movieDetailsStackView!.bounds.height ) // 0
print("movieDetailsStackView!.frame.height: ",movieDetailsStackView!.frame.height ) // 0
这就是它的创建方式:
func createMovieDetailsStackView () {
/******************/
// Add movie image
/*****************/
let movieImageViewHeight = 300.00
let movieImageViewWidth = 20.00
movieImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: movieImageViewWidth, height: movieImageViewHeight));
movieImageView!.layer.borderWidth = 10
movieImageView!.layer.borderColor = UIColor.red.cgColor
/******************/
var arrangedSubviews = [UIView]()
arrangedSubviews.append(movieImageView!)
movieDetailsStackView = UIStackView(arrangedSubviews: arrangedSubviews)
movieDetailsStackView!.translatesAutoresizingMaskIntoConstraints = false
movieDetailsStackView!.distribution = .fillProportionally
movieDetailsStackView!.axis = .horizontal
movieDetailsStackView!.spacing = 8
self.view.addSubview(movieDetailsStackView!)
movieDetailsStackView!.topAnchor.constraint(equalTo: self.view.topAnchor, constant:70).isActive = true
movieDetailsStackView!.leftAnchor.constraint(equalTo: self.view.leftAnchor, constant: 0).isActive = true
movieDetailsStackView!.rightAnchor.constraint(equalTo: self.view.rightAnchor, constant: 0).isActive = true
}
对此有什么解释吗?当您将任何视图添加为堆栈视图的
排列子视图时,其属性translatesAutoResizezingMaskintoConstraints
会自动设置为“false”
因此,根据堆栈视图的对齐和分布属性的设置方式,可能需要向视图添加宽度和/或高度约束
您在显示的代码中有一些奇怪的设置,例如:
让movieImageViewWidth=20.00
。。。你真的希望它只有20分宽吗
moviedetailssstackview!。分布=.Fill按比例
。。。这几乎肯定不是你想要的分销。从开始。填充,只有在没有得到所需结果时才进行更改
- 您正在使用大量的
代码>。。。“强制展开”是导致崩溃的秘诀
但是,使用现有代码,添加以下行:
movieDetailsStackView = UIStackView(arrangedSubviews: arrangedSubviews)
// add this line here
movieImageView?.heightAnchor.constraint(equalToConstant: CGFloat(movieImageViewHeight)).isActive = true
然后查看是否得到了所需的结果。是否也尝试过向堆栈视图添加高度约束?与movieImageViewHeight相等的值