我已经通过编程添加了一个UIView和一个UIImageView,但我需要它的宽度和高度。可以获取吗?如果可以,请分享如何获取。
代码:
let View1: UIView = {
let viewView = UIView()
viewView.translatesAutoresizingMaskIntoConstraints = false
viewView.contentMode = .scaleAspectFit
print(UserDefaults.standard.bool(forKey: "backgroundColourSelected"))
if UserDefaults.standard.bool(forKey: "backgroundColourSelected") {
viewView.backgroundColor = self.viewColor
}else {
viewView.backgroundColor = .white
}
viewView.clipsToBounds = true
return viewView
}()
self.canvasView.addSubview(View1)
View1.centerXAnchor.constraint(equalTo: canvasView.centerXAnchor, constant: 0).isActive = true
View1.centerYAnchor.constraint(equalTo: canvasView.centerYAnchor, constant: 0).isActive = true
View1.widthAnchor.constraint(equalTo: canvasView.widthAnchor, constant: 0).isActive = true
View1.heightAnchor.constraint(equalTo: canvasView.widthAnchor, multiplier: aspectRatio).isActive = true
发布于 2021-08-13 02:26:07
对ViewController使用override func viewWillLayoutSubviews(),对UIView使用override func layoutSubviews()。
示例:-用于UIViewControllers
override func viewWillLayoutSubviews() {
print(yourView.frame.height)
}
对于UIViews
override func layoutSubviews() {
print(yourView.frame.height)
print(yourView.frame.width)
}
由于视图位于函数内部,因此只需将其移出即可
class YourController / YourView {
private let imgView: UIImageView = {
let iv = UIImageView()
// do whatever you want with your image using iv. eg. iv.contentMode = .scaleAspectFit or iv.image = UIImage(named: "custom_img")
return iv
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(imgView)
//set constraints for your
}
// then use layoutSubViews(for views) / viewWillLayoutSubViews (for controller) and calculate the height
}
发布于 2021-08-13 06:33:34
你需要知道视图控制器的生命周期。
要获取任何视图的高度,请使用viewDidLayoutSubviews
。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
print(view1.frame.size)
}
size
属性将同时打印最终高度和最终宽度。
https://stackoverflow.com/questions/68770583
复制相似问题