我在代码中动态添加ui视图。我想补充很多观点。举个例子:
let typeImage = UIImageView()
typeImage.translatesAutoresizingMaskIntoConstraints = false
rootView.addSubview(typeImage)
typeImage.widthAnchor.constraint(equalToConstant: 28).isActive = true
typeImage.heightAnchor.constraint(equalToConstant: 28).isActive = true
typeImage.leftAnchor.constraint(equalTo: rootView.leftAnchor, constant: 4).isActive = true
typeImage.topAnchor.constraint(equalTo: rootView.topAnchor, constant: 4).isActive = true
typeImage.backgroundColor = gh.myRed
typeImage.image = UIImage(named: "ic_question_bej")
我想计算我添加的所有元素的和,最后将这个计算值设置为我的根视图高度。问题是
typeImage.frame.size.height
typeImage.bounds.size.height
始终返回0.0
那么如何通过代码获取新添加的UIView的CGFloat中的高度呢?
也许我应该设置rootview的高度以另一种方式包装所有子视图?
编辑
Xcode加载视图时会有一些延迟,如果在将视图添加到父视图后立即尝试获取视图大小,则将获得0.0大小。
在检查尺码之前,您必须先致电
yourCustomView.layoutIfNeeded()
。感谢陈吉特的正确回答。
最佳答案
您可以添加如下代码:typeImage.layoutIfNeeded()
在代码之前:typeImage.frame.size.heighttypeImage.bounds.size.height
约束不会立即布局,您应该使用layoutIfNeeded
来布局视图,然后您可以获得第帧