首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Swift/ iOS中获取编程添加的视图的宽度和高度?

如何在Swift/ iOS中获取编程添加的视图的宽度和高度?
EN

Stack Overflow用户
提问于 2021-08-13 10:20:24
回答 2查看 53关注 0票数 0

我已经通过编程添加了一个UIView和一个UIImageView,但我需要它的宽度和高度。可以获取吗?如果可以,请分享如何获取。

代码:

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

发布于 2021-08-13 10:26:07

对ViewController使用override func viewWillLayoutSubviews(),对UIView使用override func layoutSubviews()。

示例:-用于UIViewControllers

代码语言:javascript
运行
复制
override func viewWillLayoutSubviews() {
    print(yourView.frame.height)
}

对于UIViews

代码语言:javascript
运行
复制
override func layoutSubviews() {
    print(yourView.frame.height)
    print(yourView.frame.width)

}

由于视图位于函数内部,因此只需将其移出即可

代码语言:javascript
运行
复制
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

}

票数 0
EN

Stack Overflow用户

发布于 2021-08-13 14:33:34

你需要知道视图控制器的生命周期。

要获取任何视图的高度,请使用viewDidLayoutSubviews

代码语言:javascript
运行
复制
override func viewDidLayoutSubviews() {
      super.viewDidLayoutSubviews()

      print(view1.frame.size)
}

size属性将同时打印最终高度和最终宽度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68770583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档